WCF服务只需要是HTTPS,但只能在HTTP上工作

时间:2013-06-14 09:49:33

标签: wcf https web-config

我有一些WCF服务已经在HTTP上工作了一段时间。

我现在将它们移到部署服务器,它们只需要是HTTPS。

我获得了证书,当我最初设置时,他们使用HTTP和HTTPS。

...此时我想放弃对服务的非安全访问。

所以我试图修改我的web.config来实现这个目标:

服务行为:

  <serviceBehaviors>
    <behavior name="MetaEnabledBahavior">
      <serviceMetadata httpsGetEnabled="true"/>
    </behavior>
  </serviceBehaviors>

服务终端:

  <service name="Services.BookingService" behaviorConfiguration="MetaEnabledBahavior">
    <!-- Service Endpoints -->
    <clear/>
    <endpoint address="https://website.com/services/BookingService.svc" binding="wsHttpBinding"
       bindingConfiguration="TransportSecurity" contract="Services.IBookingService"/>
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
  </service>

绑定:

<bindings>
  <wsHttpBinding>
    <binding name="TransportSecurity" maxReceivedMessageSize="2000000">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

目前我最终得到的是我的HTTP服务仍可访问,但HTTPS访问只发送一个空白页。

我需要HTTP才能返回错误/页面必须通过安全通道和HTTPS查看才能使用。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

Smithy尝试使用以下内容替换您的终端:

<endpoint address="" binding="basicHttpBinding" bindingConfiguration="TransportSecurity" contract="Services.IBookingService"></endpoint>

你和basicHttpBinding的绑定

  <basicHttpBinding>
    <binding name="TransportSecurity" maxReceivedMessageSize="2000000">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding>

希望这有帮助。

答案 1 :(得分:0)

在Web.Config的<protocolMapping>部分中,添加一个<remove scheme="http">元素。