WCF - HTTPS - Безопасность транспорта работает, но защита сообщений вызывает исключение при запуске приложения - PullRequest
0 голосов
/ 07 января 2019

У меня есть собственный сервер 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].

Я не могу найти причину этой ошибки, куда бы я ни посмотрел.

Объяснение будет высоко оценено.

...