在default.aspx中将http重定向到https

时间:2012-06-27 17:15:13

标签: asp.net iis iis-7 iis-6

我们的网站地址就像“http://members.XXX.XX”,所以我想重定向到“https://members.XXX.XX”,无论用户类型是“members.XXX.XX”还是“http://members.XXX.XX”,这是我的代码,我把它放在default.aspx

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.IsSecureConnection == false)
        {
            Response.Redirect(Request.Url.ToString().Replace("http://", "https://"));
        }

        if (!Request.Url.ToString().StartsWith("http://") || !Request.Url.ToString().StartsWith("https://"))
            Response.Redirect("https://" + Request.Url.ToString());

        Response.Redirect("~/pages/login.aspx");
    }

哪个不起作用,任何人都可以提供帮助?非常感谢

编辑: 我们没有在IIS中这样做,因为我们安装了ELMAH,它是一个错误记录系统。我的同事说,如果我们这样做,那么ELMAH将不起作用

2 个答案:

答案 0 :(得分:2)

不要在代码中执行它,而是让IIS为您处理它。

<强> IIS7
通过IIS要求ssl并捕获错误代码403.4以便为您执行重定向。分步指南"IIS7 Redirect HTTP to HTTPS"

<强> IIS6
您可以创建在端口80上运行的重定向站点,以处理重定向到https。阅读更多相关信息"How to Force Redirection From HTTP to HTTPS on IIS 6.0"

答案 1 :(得分:1)

您可以添加到Global.asax

    protected void Application_BeginRequest()
    {

        if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
            Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
    }