服务器无法在HTTP头已发送后设置状态

4
我有一个OnActionExecutingActionFilter,在其中我已经检查了用户会话是否已过期,如果会话已过期,则必须将用户重定向到登录页面CompressFilterAttribute.cs文件中的代码如下所示:
public override void OnActionExecuting(ActionExecutingContext FilterContext)
{
    if (((((System.Web.Mvc.ControllerContext)(FilterContext)).HttpContext).Request).IsAuthenticated)
            GZipEncodePage(); //Function to check Session Expiration Time

            var action = (string)FilterContext.RouteData.Values["action"];

            if (!FilterContext.HttpContext.User.Identity.IsAuthenticated && 
                action != "Index" && 
                action != "FindStoreNameByText" && 
                action.ToLower() != "sessiontimeout" && 
                action.ToLower() != "logout")
            {
                string UrlSucesso = "/Home";
                string UrlRedirecionar = string.Format("?ReturnUrl={0}", UrlSucesso);
                string UrlLogin = FormsAuthentication.LoginUrl + UrlRedirecionar;
                FilterContext.HttpContext.Response.Redirect(UrlSucesso, true);
            }
    }

CustomErrorHandleAttribute.cs 文件的代码如下所示:

public override void OnException(ExceptionContext filterContext)
{
    base.OnException(filterContext);
    // Rest logic
}

CustomErrorHandleAttribute.cs 文件中,我遇到了错误 --> 服务器在 HTTP 标头已发送后不能设置状态
请帮助我解决此问题。

1个回答

9

谢谢你的帮助,但我还没有解决这个问题,错误仍然存在。无论如何,我会将你的回答标记为有用的。... - HarshSharma
1
我仍然认为问题出现在CustomErrorHandleAttribute.cs中,因为它试图在重定向头已经发送到浏览器之后发送http错误。你应该调试一下重定向后运行的代码以及存储在ExceptionContext.Exception中的确切异常是什么。 - artokai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接