2009-04-08 5 views
2

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

<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, который будет использоваться другими приложениями non-.net, и в дальнейшем у меня нет хорошего места, чтобы поставить app.config.

Спасибо!

+0

Может показать, что у вас есть до сих пор, и люди могут попытаться указать на проблемы –

+0

@Sunny: спасибо за включение XML, что это за трюк, чтобы сделать эту работу? – Eyvind

ответ

2

Вы могли бы использовать что-то вроде этого (он выглядит довольно стандартный 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

Спасибо, 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... 
+0

ОК, рад, что я смог помочь! (Я изучаю экзамен WCF прямо сейчас, поэтому этот материал должен быть свежим на моем уме :-) –

Смежные вопросы