Ho un servizio WCF che funziona correttamente se creo il servizio senza specificare alcun binding o endpoint (lo legge dai valori generati in App.config quando ho registrato WCF tramite Visual Studio).WCF: come posso ricreare in modo programmatico questi valori App.config?
Ho un metodo semplice che restituisce il riferimento al servizio:
return new SmsServiceReference.SmsEngineServiceClient();
Questo funziona bene (perché i valori vengono letti dal config). Tuttavia, mi piacerebbe avere un po 'di questi valori in un database (l'URI per esempio) e vorrei fare qualcosa di simile:
Binding binding = new BasicHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress("my.uri.com/service.svc");
return new SmsServiceReference.SmsEngineServiceClient(binding,endpointAddress);
Questo non funziona. Genera un'eccezione quando provo a utilizzare il riferimento del servizio.
Ho il sospetto che questo sia dovuto al fatto che il mio App.config ha più informazioni che le due linee in alto non forniscono (ovviamente). La domanda è: come posso replicare i seguenti valori di App.Config in modo programmatico?
Ecco il frammento del mio App.Config: (l'URI è stato modificato per proteggere l'inocent).
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ISmsEngineService" 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>
</bindings>
<client>
<endpoint address="http://www.myuri.com/Services/Services.svc/basic"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISmsEngineService"
contract="SmsServiceReference.ISmsEngineService" name="BasicHttpBinding_ISmsEngineService" />
</client>
Questo ha fatto il trucco. Grazie. –