我在asp.net web forms范例(api用MVC的APIController实现)。我在IISExpress中添加了以下绑定
http://sarfraz-pc:80
https://sarfraz-pc:443
使用此great article。我可以使用http或https访问整个站点。现在,我想强制一些页面在http上运行,而其他页面在https上运行。 Google给了我lots of results,其中包括old solution from code project,另一个名为Security Switch。
但我正在认真考虑使用IIS 7.0's url rewrite模块来实现这一点。有没有人为此目的使用URL重写?我不知道网址重写的细节,所以我想问一下这条路线有缺点吗?如果是,请建议一些替代方法(包括我提到的方法),但不应该只是在应用程序中编写Response.Redirect
代码。
答案 0 :(得分:4)
将此代码添加到您的global.asax文件中,以检查每个请求并即时转换。
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false))
{
Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"]
+ HttpContext.Current.Request.RawUrl);
}
}
答案 1 :(得分:2)
虽然它没有使用URL Rewrite(我只有少量的经验),但我们通过IIS中的自定义错误处理它。
然后进入403_4.aspx
...
Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim url As String = Request.Url.Query
url = url.Replace("?403;", "")
Dim port As String = String.Format(":{0}/", New Uri(url).Port)
If url.IndexOf(port) <> -1 Then
url = url.Replace(port, "/")
End If
url = url.Replace("http://", "https://")
Response.Redirect(url, True)
End Sub
我知道这不完全是你所追求的,但它比在代码中的多个位置重定向更好。