注销并将用户重定向到登录屏幕ASP NET MVC/C#

注销并将用户重定向到登录屏幕ASP NET MVC/C#,c#,asp.net-mvc,C#,Asp.net Mvc,我正在寻找一种方法来结束我的会话,并在系统超时时将用户重定向到登录屏幕 根据我所研究的一些示例,我尝试使用Session.about()。但我不知道我做错了什么。下面是我在Global.asax中要执行的代码: protected void Application_EndRequest(object sender, EventArgs e) { var context = new HttpContextWrapper(Context); if (cont

我正在寻找一种方法来结束我的会话,并在系统超时时将用户重定向到登录屏幕

根据我所研究的一些示例,我尝试使用Session.about()。但我不知道我做错了什么。下面是我在Global.asax中要执行的代码:

protected void Application_EndRequest(object sender, EventArgs e)
    {
        var context = new HttpContextWrapper(Context);

        if (context.Response.StatusCode == 302 && context.Request.IsAjaxRequest())
        {
            var redirectLocation = context.Response.RedirectLocation.ToString();

            context.Response.RedirectLocation = null;
            context.Response.ContentType = "text/plain";
            context.Response.Write("session_timeout;" + redirectLocation);
            Session.Abandon();
            Response.Redirect("~/Account/Login");

        }
    }

代码只运行到:context.Session.about();除非我刷新页面,否则不会重定向到登录屏幕。

我可以这样解决我的问题:

public ActionResult LogOff()
    {
        HttpContext.Session.Remove(SessionKeys.UserType);//This will remove all keys from session variable. For example, if your session contains id, name, phone number, email etc.
        HttpContext.Session.RemoveAll();//This will remove all session from application
        FormsAuthentication.SignOut();            
        return RedirectToAction("Login", "Account");
    }
1-我通过添加以下标记在我的Web.config中设置超时时间:

<sessionState timeout="16"></sessionState>

注意:此函数已放在我的_布局中。chshtml

我可以通过以下方式解决我的问题:

1-我通过添加以下标记在我的Web.config中设置超时时间:

<sessionState timeout="16"></sessionState>

注意:此函数放在我的_布局中。chshtml

是否尝试了context.Response.Redirect(“~/Account/Login”);代替响应。重定向(“~/Account/Login”);既然你说我已经试过了,context.Session.about();和context.Response.Redirect(“~/Account/Login”);但它不起作用。我在Session.放弃()中设置了一个断点,并意识到没有执行重定向。。。。。我单击“保存”按钮,系统没有响应,我想重定向到页面登录。您正在检查它是否是AjaxRequest,我认为如果是Ajax请求,客户端不会重定向。您可能还想终止身份验证票证。我不知道如何执行此操作。我已经在寻找一种方法,但没有找到。您是否尝试了context.Response.Redirect(“~/Account/Login”);代替响应。重定向(“~/Account/Login”);既然你说我已经试过了,context.Session.about();和context.Response.Redirect(“~/Account/Login”);但它不起作用。我在Session.放弃()中设置了一个断点,并意识到没有执行重定向。。。。。我单击“保存”按钮,系统没有响应,我想重定向到页面登录。您正在检查它是否是AjaxRequest,我认为如果是Ajax请求,客户端不会重定向。您可能还想终止身份验证票证。我不知道如何执行此操作。我已经寻找了一种方法,但是我没有找到。谢谢你的回复,但是我想要的不是通过单击退出按钮退出系统,而是在相同的der超时时离开系统。谢谢你的回复,但是我想要的不是通过单击退出按钮退出系统,而是在相同的der超时时离开系统。