C# WCF服务跟踪显示UriFormatException

C# WCF服务跟踪显示UriFormatException,c#,wcf,web-services,soap,ws-addressing,C#,Wcf,Web Services,Soap,Ws Addressing,我试图创建一个WCF服务,通过将SOAP请求传递给该服务,其他方将使用该服务。客户端要求我处理交互过程中可能发生的一组FaultException 这包括如果客户端在SOAP请求[wsa:To]元素中发送格式错误的Uri,即如果客户端(例如)发送请求时包含以下内容: <wsa:To>http//:this.is.invalid/address</wsa:To> http/:this.is.invalid/address 我应该能够抛出一个特定的FaultExcepti

我试图创建一个WCF服务,通过将SOAP请求传递给该服务,其他方将使用该服务。客户端要求我处理交互过程中可能发生的一组FaultException

这包括如果客户端在SOAP请求[wsa:To]元素中发送格式错误的Uri,即如果客户端(例如)发送请求时包含以下内容:

<wsa:To>http//:this.is.invalid/address</wsa:To>
http/:this.is.invalid/address
我应该能够抛出一个特定的FaultException。我尝试实现IDispatchMessageInspector以在SOAP请求到达操作之前捕获它,但是当客户端发送的请求包含一个错误的Uri(如上面的示例所示)时,AfterReceiveRequest不会被调用,因此我无法处理此类错误

在我为WCF服务启用跟踪日志记录之前,我无法找到该错误,并且我确认了该错误

System.UriFormatException,系统,版本=4.0.0.0,区域性=中性, PublicKeyToken=b77a5c561934e089


带说明

处理异常。例外情况详情: System.UriFormatException:无效的URI:URI方案无效


问题是如何以及在何处可以在代码中捕获此异常?

提前感谢,soap头wsa:To应该包含消息的预期接收者的地址。WCF客户端框架通过使用服务端地址作为
wsa:To
头元素的值来强制实现这一点。我不确定WCF服务端框架是否强制验证该元素,因为它已经准备好接收soap消息

您看到400 HTTP错误是因为WCF客户端试图向无效的服务端点发送soap消息。要正确测试无效的
wsa:To
值,您需要创建soap XML的代码,该soap XML具有无效的
wsa:To
值,但发送到正确的服务端点


如果WCF未验证此值,则使用
IDispatchMessageInspector
实现的方法应该有效。否则,如果WCF在调用
IDispatchMessageInspector
实现之前抛出异常,则可能需要实现
IErrorHandler
端点行为来捕获此类“管道中”异常。有关如何实现和配置它的信息,请参阅。

注意:在客户端,我收到一个400 HTTP错误作为web异常,没有任何详细信息。感谢您的回复,但是我已经让客户端向我的WCF服务发送了一个格式正确、值错误的头,比如
http:\\any.thing\address
,调试器命中了AfterReceiveRequest方法,我可以在那里抛出所需的异常。但是,当格式错误时,AfterReceiveRequest方法根本不会被命中。我会检查一下,然后再给你回复。再次感谢