0

我们的解决方案中有一个自定义异常处理行为(实现 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>
4

1 回答 1

0

不是 100% 确定这里的礼仪。我猜这是对我特定的愚蠢品牌的回答。也许其他人会一样愚蠢,那么答案适用于他们......

我确定我已经比较了所有内容(我陈述了完全相同的代码/配置)。但是行为配置文件我只是给了一个快速的视觉。在另一位开发人员找到我后,我意识到本地文件与服务器文件不同。嗬!

事实上,服务器文件通过构建后步骤添加了一个额外的行 - 除了我们已经用于日志记录等的 IErrorHandler 行为之外,还触发了另一种实现 IErrorHandler 的自定义行为。

我想我现在要打开另一个问题,该问题寻求对实现相同接口的多种行为并且不污染彼此功能(如返回故障)的方法的答案。

于 2011-08-08T02:17:03.147 回答