Перевести этот app.config xml в код? (ФОС) - PullRequest
2 голосов
/ 08 апреля 2009

У меня есть следующий раздел app.config, который мне нужно перевести в код. Я видел несколько примеров, но все еще не могу заставить его работать. Может ли кто-нибудь помочь?

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="MyService" 
                 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="TransportWithMessageCredential">
                <transport clientCredentialType="None" 
                           proxyCredentialType="None" 
                           realm="" />
                <message clientCredentialType="UserName" 
                         algorithmSuite="Default" />
            </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://server.com/service/MyService.asmx"
      binding="basicHttpBinding" bindingConfiguration="MyService"
      contract="MyService.MyServiceInterface"
      name="MyService" />
    </client>
</system.serviceModel>

Мой пример использования - я пишу dll, который будет использоваться другими приложениями, отличными от .NET, и отныне у меня нет подходящего места для размещения app.config.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 апреля 2009

Вы можете использовать что-то вроде этого (это выглядит довольно стандартно basicHttpBinding):

BasicHttpBinding binding = new BasicHttpBinding();
Uri endpointAddress = new Uri("https://server.com/service/MyService.asmx");

ChannelFactory<MyService.MyServiceInterface> factory = new ChannelFactory<MyService.MyServiceInterface>(binding, endpointAddress);

MyService.MyServiceInterface proxy = factory.CreateChannel();

Это работает до тех пор, пока у вас есть DLL, которая содержит контракт («MyService.MyServiceInterface»), и вы можете ссылаться на него в своем клиенте.

Если вам нужно это на стороне службы, вам придется использовать несколько разных классов и т. Д., Но основы одинаковы (создать привязку, создать один или несколько адресов конечных точек, связать их).

Марк

PS: Извините, я только что заметил, что вы используете адрес https: // - для этого может потребоваться дополнительная настройка безопасности в коде.

1 голос
/ 08 апреля 2009

Спасибо, marc_s, вы привели меня в правильном направлении!

Для всех, кто заинтересован, вот код, который позволяет работать с SSL:

        BasicHttpBinding binding = new BasicHttpBinding();
        binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
        Uri endpointAddress = new Uri("https://server.com/Service.asmx");

        ChannelFactory<MyService.MyServiceInterface> factory = new ChannelFactory<MyService.MyServiceInterface>(binding, endpointAddress.ToString());
        factory.Credentials.UserName.UserName = "username";
        factory.Credentials.UserName.Password = "password";

        MyService.MyServiceInterface client = factory.CreateChannel();

        // make use of client to call web service here...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...