2

我有一些 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 是唯一有效的。

我该如何解决?

4

2 回答 2

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>

希望这可以帮助。

于 2013-06-14T09:57:30.037 回答
1

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

于 2018-11-28T21:44:39.317 回答