關於 CSLA 服務器部署WCF訪問出錯的問題

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

相關文章
相關標籤/搜索