2011-10-15 34 views
13

que tienen la siguiente configuración para mi servicio WCF:WCF ¿cuál debería ser el EndpointConfigurationName?

<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> 

yo soy capaz de 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 el servicio es el 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 del enpointConfigurationName al constructor en la línea = new NGC.Service1Client. No sé qué cadena debo pasar; esperaba que fuera el nombre de configuración del punto final "After.ConfigName", pero probé esto y recibí el siguiente mensaje de error:

No se pudo encontrar el elemento de punto final con nombre 'After.ConfigName' y contrato 'NGC.IService1' en la sección de configuración del cliente de 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 del cliente.

¿Alguien puede ayudarnos?

Respuesta

22

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

new NGC.Service1Client("WSHttpBinding_IService1") 
+0

Eso es todo, gracias. –

Cuestiones relacionadas