Sto tentando di avviare un servizio WCF su SSL su IIS 6 tramite un servizio di bilanciamento del carico. Il mio problema iniziale era ovvio e abbastanza ben discusso: l'indirizzo mostrato nella pagina WSDL indicava https://SERVERNAME/WebServices/mydomainws.svc invece di www.mydomain.com. La risposta a questo problema è aggiungere un valore di intestazione host in IIS. L'ho fatto e ha funzionato ... un po '. Ora ricevo http: //www.mydomain.com/WebServices/mydomainws.svc durante la visualizzazione di wsdl in un browser. Se clicco su quel collegamento (il collegamento non-ssl) ottengo una definizione di servizio che fa nuovamente riferimento al nome del server.WCF su IIS tramite il bilanciamento del carico segnala l'indirizzo di base errato
Il rimedio consigliato più avanti è quello di utilizzare WCF Extras che fornisce un'estensione che consente di specificare un indirizzo di base. Ma l'impostazione della voce di configurazione ha aggiornato solo il soap12: indirizzo. L'indirizzo EndPointReference sta ancora utilizzando il nome della macchina.
In sintesi: WSDL come visto nel browser Web a https://www.mydomain.com/WebServices/mydomainws.svc: http: //www.mydomain.com/WebServices/mydomainws.scv
Cliccando sul link qui sopra mi porta ad un file WSDL reale con il voce seguente servizio:
https://ServerName/WebServices/mydomainws.svc
mio file di configurazione del server ha le seguenti voci: 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>
Qualcuno mi può puntare nella giusta direzione?
Grazie, George
Vale la pena notare: il problema è andato via quando sono passato da wsHttpBinding a basicHttpBinding. Dovevo farlo comunque perché il mio chiamante è su .net 2.0 e non può consumare un servizio wsHttpBinding. Credo di avere ancora bisogno del riferimento all'estensione WCF Extras. – GeorgeBarker