Я пытаюсь запустить службу WCF через SSL на IIS 6 через балансировщик нагрузки.Моя первоначальная проблема была очевидной и довольно хорошо обсуждаемой - адрес, показанный на странице WSDL, указывал на https://SERVERNAME/WebServices/mydomainws.svc вместо www.mydomain.com.Ответом на эту проблему является добавление значения заголовка узла в IIS.Я сделал это, и это сработало ... вроде.Теперь я получаю http : //www.mydomain.com/WebServices/mydomainws.svc при просмотре wsdl в браузере.Если я нажму на эту ссылку (не-ssl), я получу определение сервиса, которое снова ссылается на имя сервера.
Следующее, часто рекомендуемое средство защиты - это использование 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>
Кто-нибудь может указать мне правильное направление?
Спасибо, Джордж