没有 SOAPAction 标头的 WCF Web 服务

发布于 2024-12-13 10:02:07 字数 562 浏览 1 评论 0原文

如何在 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>

我希望它调用“messageDeliveryReport”操作。谢谢!

How can I implement a web service in WCF such that it does not require the SOAPAction header to be present in the request, and would thus dispatch the call using the message body root element name? By default, BasicHttpBinding requires the SOAPAction.

I need this to provide compatibility with a client that does not use SOAPActions.
This is my SOAP message:

<?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>

and I want it to call 'messageDeliveryReport' operation. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叫嚣ゝ 2024-12-20 10:02:07

这不是 BasicHttpBinding 的问题,而是遵守 SOAP 1.1 的问题。标准说:

An HTTP client MUST use this header field when issuing a SOAP HTTP Request.

所以你正在处理的是一个不符合自那时起就存在的标准的客户2000。您也许可以通过实现 WCF 的扩展点之一来解决此问题,MSDN 文章 使用自定义行为扩展 WCF,可能是 IDispatchMessageInspectorIDispatchOperationSelector,但该请求甚至可能无法到达那么远,因为该消息实际上并不是一个有效的 SOAP 请求。

It's not an issue of BasicHttpBinding, it's an issue of adhering to the SOAP 1.1 standard which says:

An HTTP client MUST use this header field when issuing a SOAP HTTP Request.

So what you're dealing with is a client that doesn't conform to a standard that's existed since 2000. You might be able to work around this problem by implementing one of the extensibility points of WCF which are explained in greater detail in the MSDN article Extending WCF with Custom Behaviors, probably either IDispatchMessageInspector or IDispatchOperationSelector, but the request may not even make it that far since the message really isn't a valid SOAP request to begin with.

冧九 2024-12-20 10:02:07

您可以按照此示例来构建用于根据消息正文的根元素将 SOAP 消息分派到操作的自定义行为。

You can follow this sample to build custom behavior for dispatching SOAP messages to operation based on root element of message body.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文