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