这是我的OnActionExecuting。 我知道这个问题很老但是我没有运气,因为之前的答案已经在stackoverflow上给出了类似的问题。 想分享我的方法。
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpSessionStateBase session = filterContext.HttpContext.Session;
if (session.IsNewSession || SessionHelper.GetUserData() == null)
{
FormsAuthentication.SignOut();
Error(ValidationMessages.SessionExpired);
filterContext.HttpContext.Response.StatusCode = 401;
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.Result = new JsonResult{Data = new{Error = AppConstants.SessionTimeout,LogOnUrl = FormsAuthentication.LoginUrl},JsonRequestBehavior = JsonRequestBehavior.AllowGet};
filterContext.HttpContext.Response.End();
}
else
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new{controller = "Account",action = "Login",area = "",returnUrl = filterContext.HttpContext.Request.Url}));
}
}
}
问题是当用户位于包含网格和网格按钮的任何页面中时。当用户会话到期时,如果用户点击网格按钮。然后发生以下错误。 试图设置
Response.BufferOutput = true;
filterContext.HttpContext.Response.SuppressFormsAuthenticationRedirect = true;
在filterContext.HttpContext.Response.StatusCode = 401之前的; 但没有运气 请对此有任何帮助。