MDAA项目 在之前的项目中,只要部署,历来没有发生过 经过WCF访问出错的问题,可是这次却出现以下问题:服务器
2018-04-21 13:45:39,744 [119] ERROR Galaxy.OTC.VWGUI.FrmPaymentMethodManager [(null)] - System.ServiceModel.FaultException: 因为内部错误,服务器没法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或打开对每一个 Microsoft .NET Framework SDK 文档的跟踪并检查服务器跟踪日志。
Server stack trace:
在 System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 Csla.Server.Hosts.IWcfPortal.Fetch(FetchRequest request)
在 Csla.DataPortalClient.WcfProxy.Fetch(Type objectType, Object criteria, DataPortalContext context)
在 Csla.DataPortal.Fetch(Type objectType, Object criteria)
在 Csla.DataPortal.Fetch[T](Object criteria)
在 PaymentMethodList.GetByName(String name, Int32 maxResult) 位置 \Objects\01地区\PaymentMethod.cs:行号 89
在 FrmPaymentMethodManager.QueryItem(Object[] args) 位置 \地区\FrmPaymentMethodManager.cs:行号 241
感受非常诧异,访问其它业务类却没有这个问题,百思不得其解,觉得是否是 业务类中的字段 命名有问题,偿试了也是问题依旧。日志
最后根据方法访问的顺序思考了一下,是否是 查询参数类有问题啊,干脆照原类的定义照抄了一下,什么也没变,问题解决。文档
问题的结论:原参数类是定义在 MDAACommon类的,但如今是其它类库访问它,权限已经不一样,不是同一个 包内的类,权限有限制,检查了原类的属性定义以下:rpc
#region 公有属性
public string Name
{ get; internal set; }
#endregion
把 internal 去掉就OK了。部署
记录于此,方便之后复查 get