У меня есть собственный сервер WCF (консольное приложение, которое регистрирует контракт wcf с контейнером замка ioc AsWcfService). Мне нужно, чтобы он работал безопасно через https.
Когда я настраиваю сервер для использования wsHttpBinding
с security mode=Transport
и clientCredentialsType=None
, все работает нормально.
Конфигурации выглядят следующим образом:
Конфигурация безопасности транспорта
<behaviors>
<serviceBehaviors>
<behavior name="secureBehavior">
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" httpsHelpPageEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="secureBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" sendTimeout="01:00:00">
<security mode="Transport" >
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="service" behaviorConfiguration="secureBehavior">
<endpoint binding="wsHttpBinding" bindingConfiguration="secureBinding" contract="Contract.Service" />
<host>
<baseAddresses>
<add baseAddress="https://domain-name:port-number/"/>
</baseAddresses>
</host>
</service>
</services>
Выше работает нормально.
Конфигурация защиты сообщений
<behaviors>
<serviceBehaviors>
<behavior name="secureBehavior">
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" httpsHelpPageEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="secureBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" sendTimeout="01:00:00">
<security mode="Message" >
<message clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="service" behaviorConfiguration="secureBehavior">
<endpoint binding="wsHttpBinding" bindingConfiguration="secureBinding" contract="Contract.Service" />
<host>
<baseAddresses>
<add baseAddress="https://domain-name:port-number/"/>
</baseAddresses>
</host>
</service>
</services>
Однако при настройке безопасности сообщений при попытке запустить сервер я получаю следующее исключение:
Не удалось найти базовый адрес, соответствующий схеме http для
конечная точка с привязкой WSHttpBinding. Схемы зарегистрированных базовых адресов
являются [https]. System.InvalidOperationException: не удалось найти базу
адрес, который соответствует схеме http для конечной точки с привязкой
WSHttpBinding. Схемы зарегистрированных базовых адресов: [https].
Я не могу найти причину этой ошибки, куда бы я ни посмотрел.
Объяснение будет высоко оценено.