2

我有一个用于一组 Web 服务的基于 WCF 的测试工具客户端。测试客户端允许我查看进出服务的原始请求和响应。Message Inspector 端点行为用于“挑选”原始请求和响应消息并保存它们以供以后在 UI 中显示。

这很好用,除了传递无效凭据的用例。服务器返回 HTTP 401 以及包含所发生情况的详细信息的 SOAP 错误。这在几个方面伤害了我:

  1. 在客户端上,这显示为MessageSecurityExceptionnot a FaultException,因此我无法从故障中获取详细信息。
  2. 此异常似乎阻止了AfterReceiveReply我的消息检查器上的事件处理程序触发,因此我无权访问原始响应。

有什么方法可以处理这种情况,以便 SOAP 错误作为 FaultException 出现并允许我的消息检查器处理响应,而不管返回的 HTTP 状态代码如何?

谢谢!

4

1 回答 1

2

你不能。只有在FaultException服务器端代码中发生 .NET 异常并且已被捕获时,您才会得到一个。

HTTP 401 是“未经授权的访问”——你甚至会在到达服务器代码之前得到那个异常——>这将永远是一个MessageSecurityException——从不是一个FaultException(也没有办法神奇地将它变成一个 FaultException)。

任何在执行甚至到达服务器代码之前发生的异常(像EndpointNotFoundExceptionor之类的东西TimeoutException)都不是错误异常。

但是,所有 WCF 特定异常都来自一个公共基类 - CommunicationException。因此,也许您可​​以将其作为后备处理。

于 2010-01-11T20:39:15.323 回答