使用C#中的Global.asax文件重定向

时间:2011-11-07 19:14:20

标签: c# asp.net .net security global-asax

我已将以下代码添加到我的Global.asax文件中:

 <%@ Application Language="C#" %>

 <script runat="server">

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if (ConfigurationManager.AppSettings["IsReviewServer"] == "Yes")
    {
        if (!Request.IsSecureConnection)
        {
            string path = string.Format("https{0}", Request.Url.AbsoluteUri.Substring(4));

            Response.Redirect(path);
        }
    }
}

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup

}

etc.....

但是我的BeginRequest函数被忽略了。如何将整个应用程序从http:重定向到https:?

1 个答案:

答案 0 :(得分:1)

如果您正在使用母版页或基类,我会将您的逻辑放在那里。对于这样的逻辑,不应该依赖全局事件。

将逻辑放在母版页或基类的Page_Load(或生命周期的早期版本)中,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    if (ConfigurationManager.AppSettings["IsReviewServer"] == "Yes") 
    { 
        if (!Request.IsSecureConnection) 
        { 
            string path = string.Format("https{0}", Request.Url.AbsoluteUri.Substring(4)); 

            Response.Redirect(path); 
        } 
    } 
}

如果您愿意,也可以在生命周期的其他时间执行上述操作,例如PreLoadPreRender

使用全局事件

如果您要使用全局事件,我实际上会使用Application_EndRequest,因为它会在每个请求上被调用,因此应用程序可以清理资源。