it:ad:wcf:howto:create_a_client_connection_with_no_config_file_settings

IT:AD:WCF:HowTo:Create a Client Connection with no config file settings

A client proxy is required in a scenario where there is no clear config file to update. Eg: a K2 workflow process.

One solution is to create a Code config object.

Kelvin did a hack as follows:

    public static WSHttpBinding CreateWsHttpBinding(HttpBindingConfig configuration)
    {
        // new WSHttpBinding { Security = { Mode = SecurityMode.Message, Transport = { ClientCredentialType = HttpClientCredentialType.Windows } } }
        // todo what should the binding values be here?
        WSHttpBinding binding = new WSHttpBinding { Security = { Mode = SecurityMode.Message, Transport = { ClientCredentialType = HttpClientCredentialType.Windows } } };

        binding.OpenTimeout = configuration.OpenTimeout;
        binding.SendTimeout = configuration.SendTimeout;
        binding.ReceiveTimeout = configuration.ReceiveTimeout;
        binding.CloseTimeout = configuration.CloseTimeout;

        // The following are default values for a Binding             
        binding.AllowCookies = false;
        binding.BypassProxyOnLocal = false;
        binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        //binding.MaxBufferSize = 65536;
        binding.MaxBufferPoolSize = 524288;
        binding.MaxReceivedMessageSize = 65536;
        binding.MessageEncoding = WSMessageEncoding.Text;
        binding.TextEncoding = Encoding.UTF8;
        //binding.TransferMode = TransferMode.Buffered;
        binding.UseDefaultWebProxy = true;

        System.Xml.XmlDictionaryReaderQuotas readerQuotas = new System.Xml.XmlDictionaryReaderQuotas();
        readerQuotas.MaxStringContentLength = 8192;
        readerQuotas.MaxArrayLength = 16384;
        readerQuotas.MaxBytesPerRead = 4096;
        readerQuotas.MaxDepth = 32;
        readerQuotas.MaxNameTableCharCount = 16384;

        binding.ReaderQuotas = readerQuotas;
        return binding;
    }


    public static BasicHttpBinding CreateBasicHttpBinding(string endPointAddress, HttpBindingConfig configuration)
    {
        BasicHttpBinding binding = new BasicHttpBinding(endPointAddress.ToLower().StartsWith("https") ? BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.None);

        binding.OpenTimeout = configuration.OpenTimeout;
        binding.SendTimeout = configuration.SendTimeout;
        binding.ReceiveTimeout = configuration.ReceiveTimeout;
        binding.CloseTimeout = configuration.CloseTimeout;

        // The following are default values for a Binding             
        binding.AllowCookies = false;
        binding.BypassProxyOnLocal = false;
        binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        binding.MaxBufferSize = 65536;
        binding.MaxBufferPoolSize = 524288;
        binding.MaxReceivedMessageSize = 65536;
        binding.MessageEncoding = WSMessageEncoding.Text;
        binding.TextEncoding = Encoding.UTF8;
        binding.TransferMode = TransferMode.Buffered;
        binding.UseDefaultWebProxy = true;

        System.Xml.XmlDictionaryReaderQuotas readerQuotas = new System.Xml.XmlDictionaryReaderQuotas();
        readerQuotas.MaxStringContentLength = 8192;
        readerQuotas.MaxArrayLength = 16384;
        readerQuotas.MaxBytesPerRead = 4096;
        readerQuotas.MaxDepth = 32;
        readerQuotas.MaxNameTableCharCount = 16384;

        binding.ReaderQuotas = readerQuotas;

        return binding;
    }

That he then used to create:

       WsBinding = WcfUtil.CreateWsHttpBinding(bindingConfig);

        BaseAddress = new Uri(endpointAddress);
  • /home/skysigal/public_html/data/pages/it/ad/wcf/howto/create_a_client_connection_with_no_config_file_settings.txt
  • Last modified: 2023/11/04 02:02
  • by 127.0.0.1