【问题标题】:How to Enforce HTTPS For ASMX Service如何为 ASMX 服务实施 HTTPS
【发布时间】:2013-10-08 07:59:23
【问题描述】:

我有许多在 IIS7 上运行的现有 ASMX Web 服务,并且想要更改它们,以便所有请求和响应都必须通过 HTTPS 进行。

该站点还运行其他页面,例如 PHP 和 Classic ASP,因此我不能只更改站点根目录以提供 HTTPS 页面。

我如何设置每个 ASMX 服务(应用程序),以便如果有人访问 http://www.mydomain.com/MyService/ServiceName.asmx,它会将他们重定向到 https://www.mydomain.com/MyService/ServiceName.asmx 或返回 404 错误?

想法和最佳方法?

【问题讨论】:

  • 我是否需要提供任何进一步的信息才能获得回复。

标签: iis-7 https asmx


【解决方案1】:

您是否尝试过 URL 重写?

<rewrite>
    <rules>
        <rule name="Force HTTPS" stopProcessing="true">
            <match url="(.*)/ServiceName.asmx" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

【讨论】:

    【解决方案2】:

    一个更简单的解决方案是在每个服务的构造函数中包含以下代码 - 允许您单独决定每个服务。

    if (!HttpContext.Current.Request.IsSecureConnection)
    {
        var sslUrl = HttpContext.Current.Request.RawUrl.Replace("http://", "https://");
    
        Response.Clear();
        Response.Write(string.Format("This service requires a SSL connection please go to {0}", sslUrl));
        Response.End();
    
        // Or simply redirect
        // Response.Redirect(sslUrl);
    }
    

    【讨论】:

      【解决方案3】:

      @oexenhave 使用的重定向对我不起作用。相反,我使用了以下内容(向@oexenhave 致敬以完成大部分出色工作)

      if (!HttpContext.Current.Request.IsSecureConnection)
      {
        var sslUrl = HttpContext.Current.Request.RawUrl.Replace("http://", "https://");
        Context.RewritePath(sslUrl);
      }
      

      将此添加到 asmx 构造函数中。

      【讨论】:

        【解决方案4】:

        我会鼓励你使用 WCF 而不是 ASMX http://msdn.microsoft.com/en-us/library/aa480190.aspx

        对于您的上述问题,这是否解决了您的问题?

        http://msdn.microsoft.com/en-us/library/aa302409.aspx

        谢谢...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-28
          • 2013-11-07
          • 1970-01-01
          • 2023-03-11
          • 1970-01-01
          • 2022-01-27
          • 1970-01-01
          相关资源
          最近更新 更多