【问题标题】:ASP.net MVC 5 - How to redirect to action method from from session_end() event in Global.asax.csASP.net MVC 5 - 如何从 Global.asax.cs 中的 session_end() 事件重定向到操作方法
【发布时间】:2019-11-25 21:37:04
【问题描述】:

在我的 ASP.net MVC 5 应用程序中调用 session_end() 方法时,我需要重定向到主页。

我已经在 web.config 上设置了会话超时配置 我还添加了一个动作过滤器,如果在会话被销毁时调用动作方法,请求会自动重定向到主页。

但是现在我需要在调用 session_end() 方法时自动重定向到登录页面。

void Session_End(object sender, EventArgs e)
    {
        string loginName2 = Environment.UserName;
        var allKiosks = new BLL.Services.svcInstanceKiosk().GetAllKiosks();
        var currentKiosk = allKiosks.Where(x => x.ComputerName.ToUpper() == loginName2.ToUpper()).FirstOrDefault();
        new BLL.Services.svcKiosk().UpdateKioskLoginStatus(currentKiosk.ComputerName, false, "NA")
        Response.Redirect("/Home/Login");
    }

Response.Redirect("/Home/Login");线有解决办法吗?

提前致谢。

【问题讨论】:

    标签: c# asp.net-mvc session


    【解决方案1】:

    这在 Session_End 是不可能的,它是触发的服务器端事件,这里不涉及浏览器请求/响应,所以你不能重定向浏览器。您需要在客户端上执行此操作。

    【讨论】:

    • 谢谢@Thomas。我能够在客户端自动刷新中做到这一点。
    【解决方案2】:

    我认为不可能直接在 global.asax 中使用类似以下的内容

    Response.Redirect("/Home/Login");
    

    我建议使用 signalR 将会话已过期的用户重定向到登录页面。您可以执行this 之类的操作,以便处理用户并将其映射到连接。然后每次用户会话结束时,将他从 global.asax 中的 session_end 重定向到登录页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2018-11-28
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多