https с ошибкой WCF: «Не удалось найти базовый адрес, соответствующий схеме https»

Я захожу на https: //mywebsite/MyApp/Myservice.svc и получаю следующую ошибку:

(Ссылка работает, если я использую http: //)

« Служба« /MyApp/MyService.svc »не может быть активирована из-за исключения во время компиляции. Сообщение об исключении: Не удалось найти базовый адрес, который соответствует схеме https для конечной точки с привязкой BasicHttpBinding. Зарегистрированные схемы базовых адресов: [http ] .. "

РЕДАКТИРОВАТЬ: Итак, если я перехожу address=""на address="https:// ..."то я получаю эту ошибку вместо:

« Ошибка: протокол« https »не поддерживается ..... ChannelDispatcher по адресу« https: //.../Annotation.svc »с контрактом (-ами)« «Аннотация» »не может открыть свой IChannelListener. "

Вот как Web.Configвыглядит моя :

<services>
      <service behaviorConfiguration="AnnotationWCF.AnnotationBehavior"
              name="AnnotationWCF.Annotation">
              <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Annotation"
                      contract="AnnotationWCF.Annotation" />
              <endpoint address="" 
                  binding="basicHttpBinding" bindingConfiguration="SecureTransport"
                  contract="AnnotationWCF.Annotation" />
              <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>

<bindings>
<basicHttpBinding>
    <binding name="BasicHttpBinding_Annotation" maxBufferSize="2147483647"
            maxReceivedMessageSize="2147483647">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
    </binding>
    <binding name="SecureTransport" maxBufferSize="2147483647"
            maxReceivedMessageSize="2147483647">
        <security mode="Transport">
        <transport clientCredentialType="None"/>
        </security>
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
    </binding>
</basicHttpBinding>
12.12.2008 16:32:19
7 ОТВЕТОВ

Я думаю, что вы пытаетесь настроить свой сервис аналогично следующему конфигу. Здесь есть дополнительная информация: Укажите сервис с двумя конечными точками, используя разные значения привязки . Кроме того, кроме разработки, вероятно, не очень хорошая идея иметь конечные точки HTTP и HTTPS для одной и той же службы. Это своего рода побеждает цель HTTPS. Надеюсь это поможет!

<service type="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
    <endpoint
        address="http://computer:8080/Hello"
        contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
        binding="basicHttpBinding"
        bindingConfiguration="shortTimeout"
    </endpoint>
    <endpoint
        address="http://computer:8080/Hello"
        contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
        binding="basicHttpBinding"
        bindingConfiguration="Secure"
     </endpoint>
</service>
<bindings>
    <basicHttpBinding 
        name="shortTimeout"
        timeout="00:00:00:01" 
     />
     <basicHttpBinding 
        name="Secure">
        <Security mode="Transport" />
     </basicHttpBinding>
</bindings>
3
1.04.2014 16:09:36
это выглядит как опечатка в MSDN. Разве вторая базовая HttpBinding не должна быть закрыта ПОСЛЕ режима безопасности = "Транспорт"? Также интересно, что безопасный адрес начинается с http, а не с https.
Mike Blandford 15.12.2008 17:32:18
РЕШЕНИЕ

Оказалось, что моя проблема заключалась в том, что я использовал балансировщик нагрузки для обработки SSL, который затем отправлял его через http на реальный сервер, который затем жаловался.

Описание исправления находится здесь: http://blog.hackedbrain.com/2006/09/26/how-to-ssl-passthrough-with-wcf-or-transportwithmessagecredential-over-plain-http/

Изменить: я исправил мою проблему, которая немного отличалась, после разговора с поддержкой Microsoft.

У моего приложения silverlight адрес конечной точки в коде передавался по https на балансировщик нагрузки. Затем балансировщик нагрузки изменил адрес конечной точки на http и указал на фактический сервер, на который он собирался. Поэтому в веб-конфигурации каждого сервера я добавил listenUri для конечной точки, которая была http вместо https

<endpoint address="" listenUri="http://[LOAD_BALANCER_ADDRESS]" ... />
20
23.05.2012 16:45:40
Ссылка -> blog.hackedbrain.com/archive/2006/09/26/5281.aspx не работает.
Lamps 2.03.2012 08:25:43
Используйте ссылку-
meetjaydeep 23.05.2012 07:23:09

Убедитесь, что SSL включен для вашего сервера!

Я получил эту ошибку при попытке использовать файл конфигурации HTTPS на моем локальном компьютере, у которого нет этого сертификата. Я пытался провести локальное тестирование - преобразовав некоторые привязки из HTTPS в HTTP. Я подумал, что будет проще сделать это, чем пытаться установить самозаверяющий сертификат для локального тестирования.

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

Что-то было в конфигурации для HTTPS. Создание самоподписанного сертификата в IIS7 позволило HTTP работать затем :-)

8
17.09.2010 01:20:59
Я обнаружил, что этого достаточно, чтобы убедиться, что IIS (6.0) прослушивает порт 443 (щелкните правой кнопкой мыши Веб-сайт по умолчанию, Свойства, Порт SSL, перезапустите). Я не пошел так далеко, как создание сертификата.
Rory MacLeod 30.03.2011 14:06:15
Я нашел вышеупомянутый комментарий от @ rory-macleod очень полезным. При локальном запуске обязательно включите SSL, щелкнув правой кнопкой мыши проект в Visual Studio, а затем установив для «SSL Enabled» значение «true» на панели «Свойства проекта». Затем вам будет предложено установить самозаверяющий сертификат.
Jeff 24.11.2015 23:02:05
@ Джефф спасибо, вот и все! я пытался заставить это работать в течение пары дней
symbiont 22.08.2016 12:41:10

У меня была точно такая же проблема. За исключением того, что я решил добавить «s» к значению привязки.

Старый: binding = "mexHttpBinding"

Новое: binding = "mexHttpsBinding"

фрагмент web.config:

<services>
    <service behaviorConfiguration="ServiceBehavior" name="LIMS.UI.Web.WCFServices.Accessioning.QuickDataEntryService">
        <endpoint behaviorConfiguration="AspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" 
            contract="LIMS.UI.Web.WCFServices.Accessioning.QuickDataEntryService" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
    </service>
30
10.11.2011 21:30:29

Посмотрите на ваш базовый адрес и адрес конечной точки (не можете увидеть его в вашем примере кода). скорее всего, вы пропустили столбец или другую опечатку, например, https // вместо https: //

0
5.10.2012 23:01:40

Я использовал webHttpBinding и забыл указать режим безопасности «Транспорт» в конфигурации привязки, которая вызвала ошибку:

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

Добавление этого в конфигурацию решило проблему.

0
1.02.2012 20:37:50

В моем случае я устанавливаю режим безопасности «TransportCredentialOnly» вместо «Transport» в привязке. Изменение решило проблему

<bindings>
  <webHttpBinding>
    <binding name="webHttpSecure">
      <security mode="Transport">
        <transport clientCredentialType="Windows" ></transport>
      </security>
      </binding>
  </webHttpBinding>
</bindings>
1
5.04.2012 07:49:21