Развертывание WCF - необходимо установить заголовки хоста на сайте SSL - PullRequest
0 голосов
/ 13 июля 2011

Использование 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"/>

1 Ответ

0 голосов
/ 13 июля 2011

Если командная строка не работает, вы МОЖЕТЕ сделать это в пользовательском интерфейсе.Вам нужно будет поиграть с дружественным названием сертификата.Ссылка ниже.

http://blog.armgasys.com/?p=80

...