从Elmah

时间:2017-02-07 16:01:08

标签: asp.net asp.net-mvc iis-7.5

这是我的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之前的

; 但没有运气 请对此有任何帮助。

0 个答案:

没有答案