【发布时间】:2020-07-08 11:24:01
【问题描述】:
我正在开发由第三方调用的 WCF 服务。他们要求 WCF 服务应该发送一个带有 HTTP 状态代码 200 的空响应。我有一个 void 方法,响应包含带有空正文的 SOAP 信封。但他们说响应应该是空白的。我尝试制作 OneWay 服务,但状态码是 202 而不是 200。有没有办法实现这一点?
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2020-07-02T16:07:55.708Z</u:Created>
<u:Expires>2020-07-02T16:12:55.708Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
</s:Envelope>
【问题讨论】:
-
空响应是什么意思? SOAP 消息中是否没有肥皂消息或没有内容。我认为 IDispatchMessageInspector 接口应该能够为您提供帮助。 IDispatchMessageInspector 可以处理要发送的消息。
-
没有肥皂信息。我实现了 IDispatchMessageInspector 接口。当回复设置为空时,我可以在没有肥皂信封的情况下实现空白响应。然而,随着这一变化,HTTP 状态代码更改为 202。客户端需要 200 状态代码。
-
据我所知,我们不能将reply设置为null,因为客户端会检查接收到的SOAP消息的结构,也许你可以考虑使用webhttpbinding。
标签: wcf