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 をサポートすることです。以下のコードを変更しました: from (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" },
};

to (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 .

メッセージがチャネルに送信される前に変換が行われるため、アプローチはあなたが持っているものとは異なります。MessageEncoder の代わりに MessageFormatter を使用します。MessageFormatter を使用してメッセージを変更すると、変更されたバージョンを他の層 (ログなど) で使用できるようになり、後でメッセージ セキュリティを追加する必要が生じた場合にも問題が発生しなくなります。

于 2014-01-08T09:52:36.057 に答える