【问题标题】:ASP.NET MVC redirect OnEnd [duplicate]ASP.NET MVC 重定向 OnEnd [重复]
【发布时间】:2023-03-16 15:45:02
【问题描述】:

我在 Global.asax 的 Session_OnEnd() 方法中尝试重定向

如果我输入

public void Session_OnStart()
{
    HttpContext.Current.Response.Redirect("http://www.google.es");
}

然后去谷歌,但是当我尝试这个 onEnd...

public void Session_OnEnd()
{
    HttpContext.Current.Response.Redirect("http://www.google.es");
}

表演

“用户代码未处理 NullReferenceException”,对象引用 未设置为对象的实例。

有人帮我解决这个问题吗?

【问题讨论】:

  • 你是如何测试 Session_OnEnd 的?
  • 但那里似乎没有接受的答案..
  • @ssilas777 这并不一定意味着没有正确或有效的答案。
  • 你看过ASP.NET的页面事件生命周期吗? (类似适用于 MVC...)
  • 我将会话过期时间设置为 1 分钟,为了尝试这个,我在 Session_OnStart 和 Session_OnEnd 的方法开始处设置了一个断点,并尝试在两者中重定向,仅在 OnStart 中运行,在 OnEnd 中不起作用

标签: c# asp.net asp.net-mvc asp.net-mvc-4 url-redirection


【解决方案1】:

您对 Session_OnEnd() 的发生方式存在误解。当会话超时时会发生这种情况,这通常意味着用户在一段时间内没有活动连接。由于没有活动的连接,也就没有活动的请求,因此你不能重定向任何人。

我认为您正在尝试做的是在会话超时时重定向用户浏览器,而服务器无法做到这一点。在超时不活动后,您必须在客户端的 JavaScript 中执行此操作。

【讨论】:

  • 是的,Erik,我正在尝试这个,但是,制作这个的形式是什么?有什么例子吗?谢谢
  • 最好提一下,对于持久会话状态提供程序,Session_OnEnd 根本不会触发...
  • @David91 - 我建议问一个不同的问题,因为这个问题是基于 JavaScript 的,与 MVC 或服务器端无关。
  • @David91- 那将是不同的重复 :) 基本上setTimeout(20*60*1000, function(){location = "logout.aspx"}) 是一个合理的起点。
猜你喜欢
  • 1970-01-01
  • 2010-12-23
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多