Oleg Shraibshtein
Oleg Shraibshtein

Reputation: 21

WCF - HTTPS - Transport security works but message security throws exception on application startup

I have a WCF self hosted server (a console application which registers the wcf contract with castle ioc container AsWcfService). I need it to work securely over https.

When I configure the server to use wsHttpBinding with security mode=Transport and clientCredentialsType=None, everthing works fine.

The configurations looks as follows:

Transport Security Configuration

<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>

The above works fine.

Message Security Configuration

<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>

With message security configuration, however, when I try to start the server I get the following exception:

Could not find a base address that matches scheme http for the endpoint with binding WSHttpBinding. Registered base address schemes are [https]. System.InvalidOperationException: Could not find a base address that matches scheme http for the endpoint with binding WSHttpBinding. Registered base address schemes are [https].

I can't find the reason for this error anywhere I look.

An explanation would be highly appreciated.

Upvotes: 2

Views: 931

Answers (0)

Related Questions