我有一个在Windows 2008 IIS Web服务器上运行的WCF(svs)Web服务。
IIS服务器已经安装了SSL证书,并且通过HTTP和HTTPS托管经典ASP和PHP。
我已将WCF服务作为应用程序安装在IIS服务器上(在同一域上),它可以完美地使用HTTP和HTTPS提供请求。
但是,我希望此WCF服务仅提供HTTPS请求和响应。
我需要在WCF web.config中进行哪些更改才能实现此目的?
更新
继上面的帖子之后,我设法研究了以下似乎使用web.config文件工作的内容;
<system.serviceModel>
<services>
<service behaviorConfiguration="returnFaults" name="MyService.MonitorService">
<endpoint binding="wsHttpBinding" bindingConfiguration=
"TransportSecurity" contract="MyService.IMonitorSvc" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="returnFaults">
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
任何人都可以确认这是WCF服务的正确方法,强制所有请求都是通过HTTPS(SSL)进行的吗?
基本上使用上述内容,用户是否能够向服务发出HTTP请求?或者服务是否总是强制执行HTTPS
感谢您的澄清。
答案 0 :(得分:2)
使用Microsoft URL Rewrite module,然后将以下内容添加到web.config文件中:
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
如果这是不可接受的(因为您必须记住在其他部署中添加此模块),那么this answer指出如何编写自己的https重定向器。
我对此并不完全确定,但您也可以使用System.Web.HttpContext.Current.Request.IsSecureConnection
检查实际代码。