Dmitrii
Dmitrii

Reputation: 1257

How to configure WCF services to work through HTTPS without HTTP binding?

I have configured my WCF services to work with SSL but it works ONLY if the HTTP binding exists in the IIS Web Site. When the HTTP binding not exists and exists only HTTPS binding I get the following error:

The HttpGetEnabled property of ServiceMetadataBehavior is set to true and the HttpGetUrl property is a relative address, but there is no http base address. Either supply an http base address or set HttpGetUrl to an absolute address.

How can I resolve this issue?

Thanks.

Upvotes: 18

Views: 23041

Answers (3)

Sungfu Chiu
Sungfu Chiu

Reputation: 94

      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />

Since you set httpGetEnabled to true, you need to provide a http address. And HTTP binding is a way to provide address. So if you remove it, you need to find another way to provide address. Following are two ways to provide addresses.

HttpGetUrl :

 <serviceMetadata httpGetEnabled="true" httpGetUrl="[your service address]" />

HTTP base address:

 <host>
    <baseAddresses>
       <add baseAddress="[your service address]" />
    </baseAddresses>
 </host>

Upvotes: 0

Ladislav Mrnka
Ladislav Mrnka

Reputation: 364399

Modify your configuration this way:

<behaviors>
  <serviceBehaviors>
    <behavior> <!-- behavior can have name (must have name in WCF 3.x) -->
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Upvotes: 44

DesignFirst
DesignFirst

Reputation: 329

you need to use mexHTTPSBinding unstead of mexHTTPBinding

<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />

Upvotes: 4

Related Questions