Конфигурирование WCF с использованием CustomBinding и BindingExtensions программно - PullRequest
1 голос
/ 09 декабря 2010

Мне нужно программно настроить клиент WCF, потому что мой код для Addin VS 2008.

Основной файл app.config для ADdin VS 2008:

C: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ devenv.exe.Config

Я предпочитаю не изменять этот файл, в компании есть много программистов, использующих VS 2008.

И я не могу получить доступ к конфигу, мне нужно настроить клиент WCF программно.

Моя конфигурация:

 <system.serviceModel>

    <extensions>
      <bindingElementExtensions>
        <add name="customTextMessageEncoding"
             type="Microsoft.ServiceModel.Samples.CustomTextMessageEncodingElement,CalidadCodigo.IntegracionEasyVista.CustomTextEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </bindingElementExtensions>


    </extensions>


        <bindings>
              <basicHttpBinding>
                    <binding name="WebServiceBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
                          receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                          bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                          maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                          useDefaultWebProxy="true">
                          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                          <security mode="None">
                                <transport clientCredentialType="None" proxyCredentialType="None"
                                      realm="" />
                                <message clientCredentialType="UserName" algorithmSuite="Default" />
                          </security>
                    </binding>
              </basicHttpBinding>
              <customBinding>
                    <binding name="ISO8859Binding">
                          <customTextMessageEncoding messageVersion="Soap11WSAddressing10"
                                encoding="ISO-8859-1" />
                          <httpTransport />
                    </binding>
              </customBinding>
        </bindings>
        <client>
              <endpoint address="http://easy/webservice/SmoBridge.php"
                    binding="customBinding" bindingConfiguration="ISO8859Binding"
                    contract="ServiceEasyVista.WebServicePortType" name="EasyVistaSvcEndPoint" />
        </client>
    </system.serviceModel>

Как я могу сделать это программно ??

Я бы хотел сделать это, но для использования CustomBinding и BindingExtensions:

//var binding = new System.ServiceModel.BasicHttpBinding();
var binding = new System.ServiceModel.Channels.CustomBinding();

   ConfigureBinding(binding);

   var endpoint = new System.ServiceModel.EndpointAddress(EndPointActivo);

   using (var gdc = new GestorDesplieguesClient(binding, endpoint))

   {

    eeBres = gdc.EsEntornoBRS(eeBreq);

    return eeBres.Resultado;

   }
...