Estoy intentando iniciar un servicio WCF sobre SSL en IIS 6 a través de un equilibrador de carga. Mi problema inicial era obvio y bastante discutido: la dirección que se muestra en la página WSDL apuntaba al https://SERVERNAME/WebServices/mydomainws.svc en lugar de a www.midominio.com. La respuesta a este problema es agregar un valor de encabezado de host en IIS. Lo hice y funcionó ... más o menos. Ahora obtengo http: //www.mydomain.com/WebServices/mydomainws.svc al ver el wsdl en un navegador. Si hago clic en ese enlace (el que no es SSL) obtengo una definición de servicio que nuevamente hace referencia al nombre del servidor.WCF sobre IIS a través del equilibrador de carga informa la dirección base incorrecta
El siguiente remedio recomendado es utilizar WCF Extras que proporciona una extensión que le permite especificar una dirección base. Pero al configurar esa entrada de configuración solo se actualizó soap12: address. La dirección EndPointReference sigue usando el nombre de la máquina.
En resumen: WSDL como se ve en el navegador web en https://www.mydomain.com/WebServices/mydomainws.svc: http : //www.mydomain.com/WebServices/mydomainws.scv
Al hacer clic en el enlace anterior me lleva a un archivo WSDL real con el entrada siguiente servicio:
https://ServerName/WebServices/mydomainws.svc
Mi archivo de configuración del servidor tiene las siguientes entradas: ServiceModel
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<message clientCredentialType="None"/>
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="mydomain.ws.mydomainws" behaviorConfiguration="mydomainwsBehavior">
<!-- Service Endpoints -->
<endpoint address="" **behaviorConfiguration="CorrectEndPoint"** binding="wsHttpBinding" bindingConfiguration="TransportSecurity" contract="mydomain.ws.Imydomainws"/>
<endpoint address="mex" **behaviorConfiguration="CorrectEndPoint"** binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="mydomainwsBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true" />
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
**<behavior name="CorrectEndPoint">
<wsdlExtensions location="https://www.mydomain.com/WebServices/mydomainws.svc" singleFile="true"/>
</behavior>**
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<extensions>
<behaviorExtensions>
<add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
</system.serviceModel>
Puede alguien me punto en la dirección correcta?
Gracias, George
Vale la pena señalar: el problema desapareció cuando cambié de wsHttpBinding a basicHttpBinding. Tuve que hacer esto de todos modos ya que mi interlocutor está en .net 2.0 y no puede consumir un servicio wsHttpBinding. Creo que todavía necesito la referencia a la extensión Extras de WCF. – GeorgeBarker