nig*_*tch 4 .net wcf soap web-services
如何在WCF中实现Web服务,以使其不需要请求中包含SOAPAction标头,从而使用消息正文根元素名称调度调用?默认情况下,BasicHttpBinding需要SOAPAction。
我需要它来提供与不使用SOAPActions的客户端的兼容性。这是我的SOAP消息:
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<messageDeliveryReport xmlns="http://bogus/ns"><status>D</status><systemName>cc</systemName></messageDeliveryReport>
</env:Body></env:Envelope>
Run Code Online (Sandbox Code Playgroud)
我希望它调用“ messageDeliveryReport”操作。谢谢!
这不是BasicHttpBinding的问题,而是遵循SOAP 1.1标准的问题,该标准说:
An HTTP client MUST use this header field when issuing a SOAP HTTP Request.
Run Code Online (Sandbox Code Playgroud)
因此,您要处理的客户不符合2000年以来的标准。您可以通过实现WCF的可扩展性点之一来解决此问题,MSDN中对此进行了详细说明文章用自定义行为扩展WCF,可能是IDispatchMessageInspector或IDispatchOperationSelector,但是由于消息实际上并不是有效的SOAP请求,因此该请求甚至可能没有达到要求。