WCF с помощью транспорта всегда пытается использовать HTTPS, когда я этого не хочу - PullRequest
1 голос
/ 03 сентября 2010

Я получаю следующую ошибку: «Не удалось найти базовый адрес, который соответствует схеме https для конечной точки с привязкой WebHttpBinding. Зарегистрированные схемы базовых адресов - [http]».Это началось потому, что я перешел к базовой транспортной аутентификации, добавив:

  <webHttpBinding>
    <binding name="secureBasic">
      <security mode="Transport">
        <transport clientCredentialType="Basic" />
      </security>
    </binding>
  </webHttpBinding>

После поиска в Google общего исправления, похоже, был следующий код, но у меня ничего не вышло:

<baseAddressPrefixFilters>
  <add prefix="http://mywebsiteurl"/>
</baseAddressPrefixFilters>

Тем не менее, ничего не работает.Все, что я хочу, это использовать базовую HTTP-аутентификацию для соединения не-https.Я абсолютно ничего не настроил, и кажется, что по умолчанию WCF хочет принудительно установить HTTPS-соединение.Кто-нибудь сталкивался с этим?

Ответы [ 2 ]

5 голосов
/ 03 сентября 2010

Если вы указываете WCF использовать режим безопасности транспорта, вы должны использовать транспортный протокол, который поддерживает безопасную связь.HTTP не поддерживает безопасное общение, потому что это открытый текстовый протокол (любой, кто перехватывает ваше общение, может просто прочитать то, что передается).HTTPS поддерживает безопасную связь, поэтому единственный вариант для webHttpBinding с безопасностью транспорта - использовать HTTPS (который вы можете настроить в IIS).

Здесь - сообщение в блоге, описывающее вашу ошибкуи как ее решить используя TransportCredentialOnly.Это примерно basicHttpBinding, но то же самое относится и к webHttpBinding.

4 голосов
/ 03 сентября 2010

Если вы хотите только аутентификацию на транспортном уровне (= базовая аутентификация), но не хотите защищенной связи на транспортном уровне (= HTTPS), вам нужно установить режим безопасности на TransportCredentialOnly.

...