servicemodel example endpointaddress clientbase wcf

wcf - example - system servicemodel channels binding



WCF ¿cuál debería ser el endpointConfigurationName? (1)

Pasaría el valor del atributo de name del punto final del cliente correspondiente que le gustaría usar. Por ejemplo, si desea utilizar el tercer punto final:

new NGC.Service1Client("WSHttpBinding_IService1")

Tengo la siguiente configuración para mi servicio WCF:

<system.serviceModel> <services> <service behaviorConfiguration="After.BehaviourConfig" name="ServiceInstancingDemo.Service1"> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="After.BindingConfig" name="After.ConfigName" contract="ServiceInstancingDemo.IService1"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://rb-t510/NGCInstancing/Service1.svc" /> </baseAddresses> </host> </service> </services> <bindings> <wsHttpBinding> <binding name="After.BindingConfig" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferPoolSize="524288111" maxReceivedMessageSize="524288111" allowCookies="false"> <security mode="None" /> </binding> </wsHttpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="After.BehaviourConfig"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceThrottling maxConcurrentCalls="30" maxConcurrentInstances="2147483647" maxConcurrentSessions="30" /> </behavior> </serviceBehaviors> </behaviors>

Puedo llamar al servicio con el siguiente código de cliente:

NGC.Service1Client ngc = new NGC.Service1Client(); var taskA = Task<string>.Factory.StartNew(() => ngc.WaitThenReturnString(5)); this.listBox1.Items.Add(taskA.Result);

La configuración para el cliente que llama al servicio es la siguiente:

<system.serviceModel> <bindings> <wsHttpBinding> <binding name="Before" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferPoolSize="524288111" maxReceivedMessageSize="524288111" allowCookies="false" /> <binding name="After" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferPoolSize="524288111" maxReceivedMessageSize="524288111" allowCookies="false"> <security mode="None" /> </binding> <binding name="WSHttpBinding_IService1" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> <security mode="None"> <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> <message clientCredentialType="Windows" negotiateServiceCredential="true" /> </security> </binding> </wsHttpBinding> </bindings> <client> <endpoint address="http://rb-t510/NGCInstancing/Service1.svc" binding="wsHttpBinding" bindingConfiguration="Before" contract="NGCInstance.IService1" name="Before" /> <endpoint address="http://rb-t510/NGCInstancing/Service1.svc" binding="wsHttpBinding" bindingConfiguration="After" contract="NGCInstance.IService1" name="After" /> <endpoint address="http://rb-t510/NGCInstancing/Service1.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1" contract="NGC.IService1" name="WSHttpBinding_IService1"> <identity> <dns value="localhost" /> </identity> </endpoint> </client> </system.serviceModel>

El problema es que quiero agregar otro punto final que ejecutará la misma funcionalidad pero con un comportamiento diferente. Para hacer esto, creo que voy a necesitar pasar una cadena de enpointConfigurationName al constructor en la línea = new NGC.Service1Client. No sé qué cadena debo pasar. Habría esperado que fuera el nombre de configuración del punto final "After.ConfigName", pero lo intenté y recibí el siguiente mensaje de error:

No se pudo encontrar el elemento de punto final con el nombre ''After.ConfigName'' y el contrato ''NGC.IService1'' en la sección de configuración del cliente ServiceModel. Esto podría deberse a que no se encontró ningún archivo de configuración para su aplicación, o porque no se pudo encontrar ningún elemento de punto final que coincida con este nombre en el elemento cliente.

Alguien puede ayudarme porfavor?