2009-04-08 8 views
2

J'ai la section app.config suivante que j'ai besoin de traduire en code. J'ai vu plusieurs exemples, mais je n'arrive toujours pas à le faire fonctionner. Quelqu'un pourrait-il aider?Traduire ce fichier app.config au code? (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> 

Mon cas d'utilisation est que je suis en train d'écrire une dll qui sera utilisé par d'autres applications non-.net, et désormais je ne bon endroit pour mettre le app.config.

Merci!

+0

montrer Peut-être ce que vous avez à ce jour, et les gens peuvent essayer de signaler les problèmes –

+0

@Sunny: Merci pour inclure le XML, quel est le truc pour faire ce travail? – Eyvind

Répondre

2

Vous pouvez utiliser quelque chose comme ça (il ressemble basicHttpBinding assez standard):

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(); 

Cela fonctionne aussi longtemps que vous avez une DLL qui contient le contrat (« MyService.MyServiceInterface ») disponibles et vous pouvez référence dans votre client.

Si vous en avez besoin du côté service, vous devrez utiliser différentes classes, mais les bases sont les mêmes (créer une liaison, créer une ou plusieurs adresses de point de terminaison, les lier).

Marc

PS: Désolé, je viens de remarquer que vous utilisez une adresse https: // - qui pourrait nécessiter une configuration de sécurité supplémentaire dans le code.

1

Merci marc_s, tu m'as amené dans la bonne direction!

Pour toute personne intéressée, voici le code pour le faire fonctionner avec SSL ainsi:

 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

OK, content d'avoir pu aider! (J'apprends pour l'examen de la WCF en ce moment donc ce truc devrait être frais dans mon esprit :-) –

Questions connexes