C# 从Global.asax重定向
当我在会话中使用此代码时,请在global.asax中结束 我的错误是:C# 从Global.asax重定向,c#,asp.net,C#,Asp.net,当我在会话中使用此代码时,请在global.asax中结束 我的错误是: 对象引用未设置为对象的实例。 为什么 当引发事件SessionEnd时,请求和响应均为null HttpContext.Current.Response.Redirect("~/default.aspx"); 这是出于设计:会话不是在请求期间结束,而是在会话超时时结束 它通常(默认配置)发生在最后一个请求后20分钟 由于没有请求,因此也没有响应。 无论如何,如果要在会话过期时将用户重定向到页面,可以检查会话中存储的变量
对象引用未设置为对象的实例。
为什么 当引发事件SessionEnd时,请求和响应均为null
HttpContext.Current.Response.Redirect("~/default.aspx");
这是出于设计:会话不是在请求期间结束,而是在会话超时时结束
它通常(默认配置)发生在最后一个请求后20分钟
由于没有请求,因此也没有响应。
无论如何,如果要在会话过期时将用户重定向到页面,可以检查会话中存储的变量之一:
HttpContext.Current.Response //this is null
会话结束不是应用程序用户调用的事件,而是会话超时时服务器调用的事件。因此,当您尝试访问HttpContext时,它是空的,因为没有HttpContext可访问(没有当前正在与您的站点进行某种交互的用户)
无论您做什么,重定向不存在的HttpContext的尝试都将始终失败。会话结束由服务器根据内部计时器在内部触发。因此,当发生这种情况时,不存在关联的HttpRequest。这就是为什么Response.Redirect或Server.transfer没有意义,也无法工作的原因
我希望以上信息会有所帮助可能重复的信息在会话结束时重定向没有意义,因为没有什么可重定向的。会话结束事件是指当会话超时时,没有可重定向的用户。这只是服务器端。有什么解决方案吗?@sidhewsar您的期望是什么?无法将不再打开web浏览器的用户重定向到您的网站
protected void Page_Load(object sender, EventArgs e)
{
if (Session["YOUR_VAR_NAME"]==null)
{
Response.Redirect("~/default.aspx");
}
}