0

実用的に作成したCustomBindingを使用すると、次の例外が発生し続けます。

アドレス指定バージョン'AddressingNone(http://schemas.microsoft.com/ws/2005/05/addressing/none)'は、WS-Addressingヘッダーの追加をサポートしていません。

この問題を解決する方法はありますか?

private static CustomBinding CreateCustomBinding(bool useHttps)
{
    BindingElement security;
    BindingElement transport;
    if (useHttps)
    {
        security = SecurityBindingElement.CreateSecureConversationBindingElement(
            SecurityBindingElement.CreateUserNameOverTransportBindingElement());
        transport = new HttpsTransportBindingElement
        {
            MaxBufferPoolSize = 2147483647,
            MaxBufferSize = 2147483647,
            MaxReceivedMessageSize = 2147483647,
        };
    }
    else
    {
        security = SecurityBindingElement.CreateSecureConversationBindingElement(
            SecurityBindingElement.CreateUserNameForSslBindingElement(true));
        transport = new HttpTransportBindingElement
        {
            MaxBufferPoolSize = 2147483647,
            MaxBufferSize = 2147483647,
            MaxReceivedMessageSize = 2147483647,
        };
    }


    var encoding = new MtomMessageEncodingBindingElement
    {
        MaxReadPoolSize = 64,
        MaxWritePoolSize = 16,
        MaxBufferSize = 2147483647,
        MessageVersion = MessageVersion.Soap11,
        WriteEncoding = System.Text.Encoding.UTF8
    };

    //var encoding = new TextMessageEncodingBindingElement();


    var customBinding = new CustomBinding();

    customBinding.Elements.Add(security);
    customBinding.Elements.Add(encoding);
    customBinding.Elements.Add(transport);

    return customBinding;
}  
4

2 に答える 2

3

誰かが興味を持っている場合に備えて、以下が私の解決策です。ifテキストエンコーディングセクションを処理するためのを追加し、SecurityBindingElement以下も更新しましたif (useHttps)

private static CustomBinding CreateCustomBinding(bool useHttps, bool textEncoding)
{
    BindingElement security;
    BindingElement encoding;
    BindingElement transport;
    if (useHttps)
    {
        var seq = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
        seq.MessageSecurityVersion =
            MessageSecurityVersion.
                WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
        seq.SecurityHeaderLayout = SecurityHeaderLayout.Lax;
        seq.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Default;

        security = seq;
        transport = new HttpsTransportBindingElement
        {
            MaxBufferPoolSize = 2147483647,
            MaxBufferSize = 2147483647,
            MaxReceivedMessageSize = 2147483647,
        };
    }
    else
    {
        security = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
        transport = new HttpTransportBindingElement
        {
            MaxBufferPoolSize = 2147483647,
            MaxBufferSize = 2147483647,
            MaxReceivedMessageSize = 2147483647,
        };
    }

    if (textEncoding)
        encoding = new TextMessageEncodingBindingElement
        {
            MaxReadPoolSize = 64,
            MaxWritePoolSize = 16,
            MessageVersion = MessageVersion.Soap11,
            WriteEncoding = System.Text.Encoding.UTF8
        };
    else
        encoding = new MtomMessageEncodingBindingElement
        {
            MaxReadPoolSize = 64,
            MaxWritePoolSize = 16,
            MaxBufferSize = 2147483647,
            MessageVersion = MessageVersion.Soap11,
            WriteEncoding = System.Text.Encoding.UTF8
        };

    var customBinding = new CustomBinding();

    customBinding.Elements.Add(security);
    customBinding.Elements.Add(encoding);
    customBinding.Elements.Add(transport);

    return customBinding;
}
于 2012-08-25T00:19:03.227 に答える
0

それは小さな変更で私のために働いた。タワニありがとう。HTTPSTransportBinidingElementのAuthenticationShemeをBasicに設定しただけです。

transport = new HttpsTransportBindingElement
            {
                MaxBufferPoolSize = 2147483647,
                MaxBufferSize = 2147483647,
                MaxReceivedMessageSize = 2147483647,
                AuthenticationScheme = System.Net.AuthenticationSchemes.Basic
            };
于 2014-09-03T20:35:17.720 に答える