【发布时间】:2013-07-10 08:06:58
【问题描述】:
第三方希望向我们发送 SOAP 消息。
我们的响应中<s:Body></s:Body> 元素之间的所有内容都必须在我们的控制之下。
经过几个小时的研究,WCF 消息似乎会将响应包装在一个带有 WCF 方法名称的 xml 元素中。
有没有办法使用 WCF 解决这个问题?还是有更好的、完全不同的方法?
【问题讨论】:
-
看看 System.ServiceModel.Channels.BodyWriter 是否对您有帮助。 BodyWriter 是一种抽象类型,它公开了一个名为 OnWriteBodyContents 的受保护抽象方法。
-
你能举一些你想要的例子吗?根据您提供的当前详细信息,我建议您探索 MessageContracts 以完全控制消息。
-
@MilanRaval 所以不是
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header /> <s:Body> <TestMessageResponse xmlns="http://tempuri.org/"> <TestMessageResult>hello</TestMessageResult> </TestMessageResponse> </s:Body> </s:Envelope>而是我想要<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header /> <s:Body> hello </s:Body> </s:Envelope> -
这是您系统的绝对核心部分,还是只是补充,没有那么相关的功能?如果它不需要 WCF 的灵活性和强大功能,我会选择自定义连接,您可以在模板文件中完全自行定义消息。如果您对这种方法感兴趣,请告诉我。