代码之家  ›  专栏  ›  技术社区  ›  DAG

如何使用TransportWithMessageCredential以编程方式创建自定义绑定?

wcf
  •  1
  • DAG  · 技术社区  · 7 年前

    我需要按程序创建一个 wsHttpBinding (自定义绑定)为此,我需要以下配置:

        <binding name="ws_IMembershipService_TransportWithMessageCredential_Username" messageEncoding="Text" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="true" maxBufferPoolSize="524288" maxReceivedMessageSize="10000000">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="TransportWithMessageCredential">
            <transport clientCredentialType="None" />
            <message clientCredentialType="UserName" establishSecurityContext="false" />
          </security>
        </binding>
    

    在C#中,这个配置的等价物是什么?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Popo    7 年前

    应该是这样的:

    编辑:仍然不确定这是否能满足你的需求,但可能是一个很好的起点。如果不让我知道,我会删除。

       CustomBinding cb = new CustomBinding()
            {   
                SendTimeout = System.TimeSpan.FromMinutes(1),
                ReceiveTimeout = System.TimeSpan.FromMinutes(1),
                CloseTimeout = System.TimeSpan.FromMinutes(1),
                OpenTimeout = System.TimeSpan.FromMinutes(1),                              
            };
            HttpsTransportBindingElement a = new HttpsTransportBindingElement();
            a.MaxReceivedMessageSize = 10000000;
            a.MaxBufferSize = 524288;
            a.BypassProxyOnLocal = true;
            a.AuthenticationScheme = AuthenticationSchemes.None;
            SymmetricSecurityBindingElement b = SecurityBindingElement.CreateSspiNegotiationBindingElement(true);
            TextMessageEncodingBindingElement c = new TextMessageEncodingBindingElement(MessageVersion.Soap11, System.Text.Encoding.UTF8);
            SecurityBindingElement d = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
            d.MessageSecurityVersion = MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
            c.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxDepth = 32, MaxStringContentLength = 8192, MaxArrayLength = 16384, MaxBytesPerRead = 4096, MaxNameTableCharCount = 16384 };            
            cb.CreateBindingElements();
            cb.Elements.Add(a);
            cb.Elements.Add(b);
            cb.Elements.Add(c);
            cb.Elements.Add(d);
    
    推荐文章