还有其他人遇到在Firefox中丢失会话变量而在Chrome或IE中丢失会话变量的问题吗?

时间:2019-05-06 16:37:45

标签: c# firefox asp.net-mvc-5

我们在返回存储在会话中的变量时遇到了一些问题,这反过来又导致我们的控制器授权代码将一些用户重定向到登录页面。用户似乎仅在Firefox浏览器中遇到此问题,并且在使用Chrome或Edge时,该应用程序对他们而言正常运行。这几乎就像是在浏览网站时断开会话(通常是在登录后立即重定向到主页,但是有时用户可以在被踢出之前通过很少的链接)。问题仅在if之后在我们的测试或生产站点中运行,在本地重现该问题很麻烦。我想知道其他人之前是否曾遇到过此类问题,以及他们是否能够找到解决方法或解决该问题。我们的会话状态设置为InProc。

基于我在这里阅读的其他线程,到目前为止,我已经尝试了以下方法: 确保Session_Start位于Global.asax中,尝试在Session_Start方法“ Session [“ Init”] = 1“中设置“虚拟”会话变量,并将其添加到本节下的web.config文件中 ,以及我发现的其他一些解决方案,结果并不能解决我们的问题。

这是有问题的代码部分。

public class AuthorizeSessionAttribute : AuthorizeAttribute, IAuthorizationFilter
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            HttpSessionStateBase session = filterContext.HttpContext.Session;
            Controller controller = filterContext.Controller as Controller;

            if (controller != null && session != null && session["CurrentRole"] == null)
            {
                controller.HttpContext.Response.Redirect("~/Account/Login");
            }

            base.OnAuthorization(filterContext);
        }
    }

我只是看不到任何明显的原因,为什么这只会在Firefox中发生,而在Chrome或IE中却可以正常工作。任何对此的投入将不胜感激。谢谢。

0 个答案:

没有答案