我有一些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查看才能使用。
我该如何解决这个问题?
答案 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">
元素。