2011-08-12 8 views
5

Así que estoy trabajando con la configuración de puntos finales para un servicio WCF. Casi no tengo experiencia con los servicios como un todo, pero me he dejado caer en medio de un proyecto que los usa. A grandes rasgos entiendo qué hace cada atributo en el punto final, excepto uno. "bindingConfiguration".¿De qué es responsable el atributo bindingConfiguration en una configuración de punto final BasicHttpBinding?

Aquí es una versión oculta de mi código (información real es propietaria):

 <endpoint address="http://localhost/SomeService.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISomeService" 
      contract="SomeService.ICoreService" name="BasicHttpBinding_ISomeService" /> 

aquí a echar de MSDN en él (como en no abordan específicamente).

Microsoft's incomplete MSDN Entry

Por supuesto Stackoverflow tiene algunas preguntas que contienen una combinación de cadena para "bindingConfiguration" pero ninguno aborda explicetely mi pregunta:

Most relative (I think) Stackoverflow question

¿Alguna idea sobre lo que este se utiliza para?

Con el interés de aprender estoy dispuesto a tomar una puñalada y estar equivocado aquí. Creo que tiene algo que ver con la autenticación o la seguridad. En la inspección de la interfaz tampoco noto nada relacionado con esto.

¡Cualquier ayuda sería genial!

Saludos

Matt

Respuesta

14

En su sección de enlaces, se pueden tener varias "configuraciones" para el mismo tipo de unión (en su caso, basicHttpBinding). La configuración de enlace elige entre ellos cuál usar.

En MSDN, debería intentar encontrar la referencia para <endpoint> (ya que bindingConfiguration is is attribute), que tendrá una definición de lo que se supone que debe hacer el atributo.

En el ejemplo siguiente, el servicio define dos puntos finales, ambos usando basicHttpBinding. Uno de ellos está expuesto a través de HTTP "normal", el otro está expuesto a través de HTTPS. El atributo bindingconfiguration es el que le dice a WCF qué configuración usar.

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="SimpleBasic"> 
       <security mode="None"/> 
      </binding> 
      <binding name="BasicOverHttps"> 
       <security mode="Transport"/> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service name="MyNamespace.MyService"> 
      <endpoint address="ep" 
         binding="basicHttpBinding" 
         bindingConfiguration="SimpleBasic" 
         contract="MyNamespace.IService" /> 
      <endpoint address="secure" 
         binding="basicHttpBinding" 
         bindingConfiguration="BasicOverHttps" 
         contract="MyNamespace.IService" /> 
     </service> 
    </services> 
</system.serviceModel> 
+0

Su ejemplo tiene mucho sentido. Gracias por su rápida respuesta. Básicamente, tienes xml adicional configurando el enlace que especifiques. Implicando el basicHttpBinding predeterminado no era exactamente lo que necesitaba. Pude localizar varios dentro de diferentes archivos dentro de la solución, pero no en ese proyecto de servicio en particular. Lo que me interesa ahora es ¿pueden las configuraciones para estas vinculaciones estar ubicadas en un archivo de configuración seprate? No pude encontrar ninguna definición que coincidiera exactamente con el nombre de mi bindingConfiguration en el archivo, o el proyecto realmente. ¿Código persistente? –

+1

Probablemente. Creo que si tienes (en IIS) un archivo web.config en un directorio, cualquier web.config en subdirectorios heredaría la configuración del padre (no lo he probado), así que si este es el caso, es posible que la configuración era de una de las configuraciones principales. Pero es probable que sea solo una mala configuración. – carlosfigueira

Cuestiones relacionadas