Iis 7 如何为ASMX服务强制使用HTTPS

Iis 7 如何为ASMX服务强制使用HTTPS,iis-7,https,asmx,Iis 7,Https,Asmx,我在IIS7上运行了许多现有的ASMX web服务,并希望对它们进行更改,以便所有请求和响应都必须通过HTTPS进行 该站点还运行其他页面,如PHP和Classic ASP,因此我不能仅仅将站点根目录更改为提供HTTPS页面 我如何根据ASMX serivce(应用程序)设置此设置,以便在有人访问时将其重定向到或返回404错误 想法和最佳方法?您尝试过URL重写吗 <rewrite> <rules> <rule name="Force HTT

我在IIS7上运行了许多现有的ASMX web服务,并希望对它们进行更改,以便所有请求和响应都必须通过HTTPS进行

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

我如何根据ASMX serivce(应用程序)设置此设置,以便在有人访问时将其重定向到或返回404错误


想法和最佳方法?

您尝试过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>

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

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);
}

我将鼓励您使用WCF而不是ASMX

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


谢谢…

@oexenhave使用的重定向对我不起作用。取而代之的是,我使用了以下方法(对@oexenhave做了大部分好的工作表示感谢)


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

我是否需要提供任何进一步的信息以获得响应。
if (!HttpContext.Current.Request.IsSecureConnection)
{
  var sslUrl = HttpContext.Current.Request.RawUrl.Replace("http://", "https://");
  Context.RewritePath(sslUrl);
}