Настройка привязки клиента WCF в программном коде - PullRequest
0 голосов
/ 14 января 2011

У меня есть следующий класс, который настраивает параметры безопасности, кодирования и токена, но у меня возникают проблемы при добавлении BasicHttpBinding для указания MaxReceivedMessageSize.Любое понимание будет оценено.

    public class MultiAuthenticationFactorBinding
{
    public static Binding CreateMultiFactorAuthenticationBinding()
    {
        HttpsTransportBindingElement httpTransport = new HttpsTransportBindingElement();
        CustomBinding binding = new CustomBinding();
        binding.Name = "myCustomBinding";

        TransportSecurityBindingElement messageSecurity = TransportSecurityBindingElement.CreateUserNameOverTransportBindingElement();
        messageSecurity.AllowInsecureTransport = true;
        messageSecurity.EnableUnsecuredResponse = true;
        messageSecurity.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12;
        messageSecurity.SecurityHeaderLayout = SecurityHeaderLayout.Strict;
        messageSecurity.IncludeTimestamp = true;
        messageSecurity.SetKeyDerivation(false);

        TextMessageEncodingBindingElement Quota = new TextMessageEncodingBindingElement(MessageVersion.Soap11, System.Text.Encoding.UTF8);
        Quota.ReaderQuotas.MaxDepth = 32;
        Quota.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
        Quota.ReaderQuotas.MaxArrayLength = 16384;
        Quota.ReaderQuotas.MaxBytesPerRead = 4096;
        Quota.ReaderQuotas.MaxNameTableCharCount = 16384;


        X509SecurityTokenParameters clientX509SupportingTokenParameters = new X509SecurityTokenParameters();
        clientX509SupportingTokenParameters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
        clientX509SupportingTokenParameters.RequireDerivedKeys = false;
        messageSecurity.EndpointSupportingTokenParameters.Endorsing.Add(clientX509SupportingTokenParameters);
        //binding.ReceiveTimeout = new TimeSpan(0,0,300);
        binding.Elements.Add(Quota);
        binding.Elements.Add(messageSecurity);
        binding.Elements.Add(httpTransport);
        return binding;
    }
}

Ответы [ 2 ]

1 голос
/ 14 января 2011

Если вам нужно указать MaxReceivedMessageSize, вы можете сделать это на своем транспортном связующем элементе - HttpsTransportBindingElement. Вы не можете добавить привязку к привязке.

0 голосов
/ 14 января 2011

Только что нашел это, чтобы создать BasicHttpBinding

BasicHttpBinding Basicbinding = new  BasicHttpBinding(BasicHttpSecurityMode.None);
Basicbinding.MaxReceivedMessageSize = 10000000;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...