Я понимаю, что есть много сообщений об этом, и я прошел через все из них, которые пришли на мой поиск и реализовали все, что было упомянуто. У меня есть веб-сервис WCF, который работает на моей локальной системе по протоколу HTTP, и он работал на сервере по протоколу HTTP. Но клиент требует, чтобы это работало через HTTPS. Мириад сообщений на этом и других сайтах показывает мне, что это не так прямо, как должно быть, поскольку до этого веб-сервис ASMX "просто работал" и не нуждался в сложной конфигурации.
Я получаю следующую ошибку с моей текущей конфигурацией:
Не удалось найти базовый адрес, соответствующий схеме https для конечная точка с привязкой WSHttpBinding. Схемы зарегистрированных базовых адресов [http].
Вот мой код с этого момента, после нескольких дней работы, чтобы настроить это, чтобы работать безрезультатно:
<system.serviceModel>
<!-- -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" >
<baseAddressPrefixFilters>
<add prefix="https://mysite.com"/>
<add prefix="http://mysite.com"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<!-- Set up Custom Behaviors -->
<behaviors>
<endpointBehaviors>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WebPostService.WebPostServiceBehavior">
<serviceMetadata httpsGetEnabled="true" httpsGetUrl="WebPostServices.svc/mex" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<!-- Set up the binding configuration -->
<bindings>
<wsHttpBinding>
<binding name="SOAPBinding"
>
<security mode="Transport">
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service
behaviorConfiguration="WebPostService.WebPostServiceBehavior"
name="WebPostService.WebPostService"
>
<host>
<baseAddresses>
<add baseAddress="https://mysite.com/Services/WebPostService.svc"/>
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="SOAPBinding"
contract="WebPostService.IWebPostService"
>
<identity>
<dns value="mysite.com" />
</identity>
</endpoint>
<endpoint
address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange"
>
</endpoint>
</service>
</services>
</system.serviceModel>
Что я делаю неправильно, и как я могу заставить это работать над HTTPS? Я расстроен тем, что это не так просто, как должно быть. Я был замешан в документации WCF в MSDN за месяцы работы над этим проектом и хорошо разбираюсь в сервисах, конечных точках и привязках - достаточно, чтобы расстроить меня даже больше, чем если бы я вообще не знал.
UPDATE: все еще работая над этим, у меня была странная ошибка при попытке поместить полный URL-адрес для mex-адреса. Я изменил это:
address="https://prcwebs.com/Services/WebPostService.svc/mex"
и получил ошибку:
Параметры безопасности для этой службы требуют проверки подлинности Windows, но он не включен для приложения IIS, на котором размещена эта служба.
Я не пытаюсь использовать проверку подлинности Windows, параметр безопасности не был изменен и по-прежнему установлен на
< режим безопасности = "Транспорт" / >
Не удалось найти базовый адрес, соответствующий схеме https для конечной точки со связыванием WebHttpBinding. Зарегистрированные базовые адресные схемы: [http] - не помогло, ничто не упоминалось, что поможет Не удалось найти базовый адрес, соответствующий схеме http для конечной точки со связыванием WSHttpBinding - Я использую транспортную безопасность, это не применимо. попытался перейти на разные режимы безопасности, все равно не смог заставить сайт работать.