我已将以下代码添加到我的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:?
答案 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);
}
}
}
如果您愿意,也可以在生命周期的其他时间执行上述操作,例如PreLoad
或PreRender
。
使用全局事件
如果您要使用全局事件,我实际上会使用Application_EndRequest
,因为它会在每个请求上被调用,因此应用程序可以清理资源。