2013-01-02 77 views
0

我正在使用NetDataContractSerializer通過WCF序列化異常。當我得到NHibernateADOException(這是客戶端未知的)時,我得到了FaultException。不幸的是我失去了內部異常信息的這個原因。有什麼方法可以將未知異常(或任何其他類型)反序列化爲指定的已知類型,或者是否有其他解決方案來解決該問題?WCF異常編組和InnerException

回答

0

您可以在web.config中設置該返回例外:

<serviceDebug includeExceptionDetailInFaults="true"/> 

此標記必須放在serviceBehavior標籤內,通常像這樣:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

詳細信息示例N:

服務器堆棧跟蹤:EM System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc & RPC)EM System.ServiceModel.Channels.ServiceChannel.Call(串動, 布爾單向,ProxyOperationRuntime操作,對象[]插件, 對象[]奏,時間跨度超時)EM System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage 包括methodCall,ProxyOperationRuntime操作)EM System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即時聊天 消息) EM System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即時聊天 reqMsg,即時聊天retMsg)EM System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData & MSGDATA:在[0]

異常重新拋出,的Int32類型)EM IMyService.GetDataOperation(RequestObterBeneficiario 請求)EM MyServiceClient.GetDataOpration( 的RequestData請求)

這將返回給客戶端的詳細信息。 在開發過程中這可以幫助您,但是當您的服務轉到生產時,您將不再保留這一點,因爲您的服務可以發送敏感數據,如數據庫名稱或配置。