0

WCF 框架,我想将响应格式从 s:envelope 更改为 soap:envelop,这里是解决方案(url 链接):

blogs.msdn.com/b/carlosfigueira/archive/2010/06/13/changeing-prefixes-in-xml-responses.aspx

但是,代码支持soap 1.2,我的要求是支持soap 1.1,它不能正常工作。我更改了以下代码:从(WSHttpBinding)

Dictionary<string, string> namespaceToPrefixMapping = new Dictionary<string, string>
{

    { "http://www.w3.org/2003/05/soap-envelope", "SOAP12-ENV" },
    { "http://www.w3.org/2005/08/addressing", "SOAP12-ADDR" },
};

到 (BasicHttpBinding)

Dictionary<string, string> namespaceToPrefixMapping = new Dictionary<string, string>
{

    { "http://schemas.xmlsoap.org/soap/envelope/", "soap" },
    { "http://www.w3.org/2005/08/addressing", "soap" },
};

因此客户端将响应以下消息:

客户端和服务绑定可能不匹配。

我应该如何继续我的代码?

4

1 回答 1

0

你应该看看这篇文章:

http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix

该方法与您使用的方法不同,因为这里的转换发生在消息发送到通道之前。它使用 MessageFormatter 而不是 MessageEncoder。使用 MessageFormatter 更改消息将允许您在其他层(例如用于日志记录)中使用更改后的版本,并且如果您稍后需要添加消息安全性也不会出现问题。

于 2014-01-08T09:52:36.057 回答