【问题标题】:IIS Rest over HTTPS onlyIIS 仅通过 HTTPS 休息
【发布时间】:2011-01-15 01:32:56
【问题描述】:

我在这里问过类似的问题:

How to enforce one method in WCF Rest to be called via https, while others can be called over http

而且在代码方面看起来不太可能。是否可以将整个服务设置为仅可通过 HTTPS 调用?我使用以下绑定配置了服务:

  <webHttpBinding>
    <binding name="webBinding"
     maxBufferSize="152428800" maxReceivedMessageSize="152428800"
     receiveTimeout="00:10:00">
        <readerQuotas maxStringContentLength="152428800"
              maxArrayLength="152428800"
              maxBytesPerRead="4096"/>
        <security mode="Transport">
        <transport clientCredentialType="None" />
        </security>
    </binding>
    </webHttpBinding>

但是当我尝试通过 http 调用一个简单的服务时,服务会愉快地返回结果,而不是返回某种异常。我是否需要将 IIS 配置为仅服务 https 请求?有人试过吗?

谢谢!

【问题讨论】:

    标签: wcf rest https


    【解决方案1】:

    您是否将 IIS 配置为在您的应用程序文件夹上要求 SSL? (您可以将其设置为允许使用 ssl 或强制使用)

    【讨论】:

    • 我最终将服务拆分为子文件夹中的“安全”服务,并在该文件夹上要求 ssl。这似乎运作良好。
    【解决方案2】:

    您始终可以使用完全限定的 https 地址向您的服务条目添加显式端点。不记得当您有一个明确的地址时,IIS 托管是否总是自动添加基地址,但即使是这样,您也可以对 ServiceHostFactory 进行简单的扩展以“吃掉”IIS 提供的默认基地址(参考您的自定义 servicehostfactory在 .svc 文件的 Factory 属性中)。然后它只会回答您在配置中提供的确切地址。

    【讨论】:

      【解决方案3】:

      可以通过配置实现。这个Blog Article 不是您的确切场景(它是通过 https 传输文件),但它显示了配置和使用应该有用的 https Web 服务的示例配置和代码。

      【讨论】:

        猜你喜欢
        • 2011-12-06
        • 2014-02-22
        • 2019-07-06
        • 2018-01-01
        • 2015-10-16
        • 2018-12-06
        • 2021-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多