我们的解决方案中有一个自定义异常处理行为(实现 IErrorHandler),它本质上使用 Automapper 将异常转换为故障。
从第 1 天开始,这一直运行良好。但是,我们刚刚在共享开发服务器上浏览 ServiceTraceViewer(查看服务器日志,而不是客户端)时注意到,从我们的服务返回的任何错误都忽略了 detail 元素。
在我的开发机器上运行完全相同的代码和配置,detail 元素被正确填充。正如我所说的,两台机器上的配置文件(行为、绑定)是相同的。两种配置都指定 includeExceptiondetailsInFaults = true。
我还添加了一堆日志语句,这些语句似乎表明两台机器上遵循相同的代码路径,并且对于各种事物(如故障代码、故障原因等)具有相同的值。
我的开发机器是 2008R2 标准(64 位)。有问题的服务器也是 2008R2 标准(64 位)。
如果需要,我可以发布代码的摘录,但首先是否有任何环境可以允许我们看到的内容?
从问题文件中提取:
<s:Body u:Id="_1">
<s:Fault>
<s:Code>
<s:Value>s:Sender</s:Value>
</s:Code>
<s:Reason>
<s:Text xml:lang="en-NZ">An error occured during the request to the ...</s:Text>
</s:Reason>
</s:Fault>
</s:Body>