Я пытаюсь запустить службу WCF через SSL на IIS 6 через балансировщик нагрузки. Моя первоначальная проблема была очевидной и довольно хорошо обсужденной - адрес, показанный на странице WSDL, указывающий на https://SERVERNAME/WebServices/mydomainws.svc вместо www.mydomain.com. Ответ на эту проблему заключается в добавлении значения заголовка узла в IIS. Я сделал это, и это сработало ... вроде как. Теперь я получаю http: //www.mydomain.com/WebServices/mydomainws.svc при просмотре wsdl в браузере. Если я нажму на эту ссылку (ссылку, отличную от ssl), я получаю определение службы, которое снова ссылается на имя сервера.WCF через IIS через балансировщик отчетов сообщает неправильный базовый адрес
Следующее рекомендуемое решение состоит в использовании WCF Extras, которое предоставляет расширение, позволяющее указать базовый адрес. Но установка этой записи конфигурации только обновила адрес soap12:. Адрес EndPointReference по-прежнему использует имя машины.
Резюмируя: WSDL, как показано на веб-браузере на https://www.mydomain.com/WebServices/mydomainws.svc: HTTP: //www.mydomain.com/WebServices/mydomainws.scv
Щелчок по ссылке выше подводит меня к фактической WSDL-файла с следующая запись службы:
https://ServerName/WebServices/mydomainws.svc
Мой конфигурационный файл сервера имеет следующие записи 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>
Может кто-нибудь мне точку в правильном направлении?
Спасибо, Джордж
Стоит отметить: проблема исчезла, когда я переключился с wsHttpBinding на basicHttpBinding. Я должен был сделать это в любом случае, поскольку мой вызывающий абонент включен .net 2.0 и не может использовать службу wsHttpBinding. По-моему, мне все еще нужна ссылка на расширение Extras WCF. – GeorgeBarker