Использование Visual Studio 2010 / .NET 4.0
Я занимался этим часами, но постараюсь быть конкретным.
Я развертываю службу WCF 4.0 в IIS7. Отлично работает под http.Я могу добавить ссылку на службу из Visual Studio для службы WCF и код против нее без проблем.
Конечно, проблема в том, что служба должна работать под https.
Мне удалосьобработать файл web.config так, чтобы он работал под https (по крайней мере, я вижу отображение .svc и? wsdl в браузере).
Но, конечно, IIS возвращает имя компьютера, а не доменимя по всему wsdl.
Поэтому, когда я пытаюсь добавить ссылку на службу, я получаю что-то вроде этого.
Документ был понят, но он не мог быть обработан.- Документ WSDL содержит ссылки, которые не могут быть разрешены.- Произошла ошибка при загрузке 'https://machinename/MyServiceName.svc?xsd=xsd0'. - Не удалось разрешить удаленное имя:' machinename '
Я знаю, что проблема в том, что IIS не возвращает заголовки хоста, поэтому WCF угадывает и возвращает имя компьютера.
Конечно, IIS7 не позволяет мне добавлять заголовки узлов на сайт, который использует SSL.Я гуглил и видел, как другие устанавливали заголовки хоста с помощью appcmd примерно так:
appcmd set site /site.name: /+bindings.[protocol='https',bindingInformation='*:443: ']
Пробовал, и он говорит мне, что сайт был изменен
Но вместо модификации существующей привязки SSL я получаю дополнительную привязку , которая имеет имя хоста, нок нему нет сертификата.Любая попытка выбрать SSL через интерфейс IIS стирает имя хоста.Я использую групповой сертификат от GoDaddy
1) Кто-нибудь видел эту проблему с appcmd?Есть идеи как решить.2) Могу ли я установить доменное имя в webconfig.Все мои попытки сделать это до настоящего времени приводили к тому, что IIS «Желтые экраны смерти» жаловались на тот или иной параметр.Я прилагаю копию для вашего развлечения и предложений.
<services>
<service name ="NameThisService" behaviorConfiguration="TheDefaultBehaviour">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="webBinding" contract="IService" >
</endpoint>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="webBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings >
<behaviors>
<serviceBehaviors>
<behavior name="TheDefaultBehaviour">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="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="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false"/>