我正在使用NetDataContractSerializer来序列化WCF上的异常。当我得到NHibernateADOException(客户端未知)时,我得到了FaultException。不幸的是,这导致我失去内部异常消息。有没有办法将未知异常(或任何其他类型)反序列化为指定的已知类型,还是有其他方法可以解决该问题?
答案 0 :(得分:0)
您希望在服务行为上将includeExceptionDetailsInFaults
设置为true。
看到这个问题:
答案 1 :(得分:0)
您可以在web.config中设置此项以返回异常:
<serviceDebug includeExceptionDetailInFaults="true"/>
此标记必须放在serviceBehavior标记内,通常如下:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
详细信息示例:
服务器堆栈跟踪:em System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc&amp; rpc)em System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway,ProxyOperationRuntime操作,Object [] ins, 对象[]输出,TimeSpan超时)em System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime operation)em System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即时聊天 消息)
在[0]处重新抛出异常:em System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天 reqMsg,IMessage retMsg)em System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培; msgData,Int32类型)em IMyService.GetDataOperation(RequestObterBeneficiario 请求)em MyServiceClient.GetDataOpration(的RequestData 请求)
这将返回客户端的详细信息。 在开发期间这可能有所帮助,但是当您的服务投入生产时,您将不再保留此信息,因为您的服务可以发送敏感数据,例如您的数据库名称或配置。