Получение HTTPS для работы при использовании basicHttpBinding - PullRequest
5 голосов
/ 23 мая 2011

Я использую WCF4 и у меня проблемы с получением сервиса для работы через https

Я создал службу wcf и развернул ее на сервере, и она работает нормально по протоколу http. Как только я меняю адрес конечной точки web.config на https, я получаю сообщение об ошибке

Служба 'NS.WebWCF.BusinessV1' не имеет конечных точек приложения (неинфраструктуры). Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за невозможности найти элемент службы, соответствующий имени службы, в файле конфигурации или из-за отсутствия конечных точек в элементе службы.

Мой web.config выглядит как

 <services>
  <service name="NS.WebWCF.Business_v1">
    <endpoint address="https://mydomain.com/business/v1/BusinessV1.svc" binding="basicHttpBinding" bindingConfiguration="" contract="NS.WebWCF.IBusinessV1" listenUri="/" isSystemEndpoint="true">
     </endpoint>
  </service>

Я установил в IIS требование SSL. Однако я получаю вышеуказанную ошибку.

Что мне нужно сделать, чтобы https заработал?

Ответы [ 3 ]

9 голосов
/ 23 мая 2011

Попробуйте это:

<system.serviceModel>
  <bindings >

    <webHttpBinding>
      <binding name="webBinding">
        <security mode="Transport">
        </security>
      </binding>
    </webHttpBinding>

  </bindings>

  <services>
    <service ...>
      <endpoint bindingConfiguration="webBinding" .../>
    </service>
  </services>

</system.serviceModel>
2 голосов
/ 23 мая 2011

Необходимо настроить привязки заголовков узлов IIS для SSL. Более старые версии IIS требуют, чтобы это было установлено из интерфейса командной строки, более поздние версии предоставляют этот инструмент через графический интерфейс.

  • Для IIS6 отметьте здесь .
  • Для IIS7, проверьте здесь .
  • Для IIS7.5 вы должны просто иметь возможность редактировать значение в разделе «Привязки» пользовательского интерфейса.

В любом случае, вы можете убедиться, что заголовки хоста были заняты, потому что HTML, сгенерированный файлом .SVC в браузере, изменится.

При доступе через HTTPS: // до того, как привязки верны, он, вероятно, будет выглядеть примерно так:

Чтобы протестировать эту услугу, вам необходимо создать клиента и использовать его для вызова оказание услуг. Вы можете сделать это с помощью Инструмент svcutil.exe из командной строки со следующим синтаксисом:

svcutil.exe <a href="https://AppServerWitHIIS/VirtualDirectory/Your.svc?WSDL" rel="nofollow">https://AppServerWitHIIS/VirtualDirectory/Your.svc?WSDL</a>

После правильной настройки привязок в IIS будет отображаться:

Чтобы протестировать эту услугу, вам необходимо создать клиента и использовать его для вызова оказание услуг. Вы можете сделать это с помощью Инструмент svcutil.exe из командной строки со следующим синтаксисом:

svcutil.exe <a href="https://www.yoursslcertsite.com/your.svc?WSDL" rel="nofollow">https://www.yoursslcertsite.com/your.svc?WSDL</a>

0 голосов
/ 06 марта 2014

Я был в похожем сценарии, где я удалил привязку HTTP и оставил только привязку HTTPS в IIS.Сайт сразу перестал работать с ошибкой выше.Чтобы решить, добавьте следующее в system.servicemodel в web.config

<protocolMapping>
      <add binding="basicHttpsBinding" scheme="https"/>
    </protocolMapping>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...