0

我是 MVC 的新手,这是我需要做的:

  1. 一个人在 1 个地方登录应用程序 (PC 1)
  2. 转到另一台 PC 并再次登录(无需从 PC 1 注销)
  3. 有人尝试使用 PC 1
  4. PC 1 注销
  5. 错误页面显示“您已被登录,因为...”

直到 4 点我还可以,但我的操作过滤器上有下一个代码:

                    filterContext.HttpContext.Items["errorMsg"] = Resources.Account.Res_String.SessionDuplica; //error msg and flag                       
                    filterContext.Result = new RedirectToRouteResult(
                    new RouteValueDictionary(new
                                            {
                                                 controller = "Account",
                                                 action = "LogOff"                                                    
                                            }));

然后在 AccountController -> LogOff 我有这个:

        FormsAuthentication.SignOut();


        if (HttpContext.Items["errorMsg"] == null)//normal logOff?
        {
            return RedirectToAction("LogOn", "Account");
        }
        else//induced logOff
        {
            ViewBag.error = HttpContext.Items["errorMsg"];
            return View();//LogOff view
        }

但是 if(HttpContext.Items["errorMsg"] == null= 总是 true

有谁知道为什么?或其他方式来做到这一点?

我只需要将一个字符串从动作过滤器发送到重定向方法

4

1 回答 1

0

获取可用于在 HTTP 请求期间在 IHttpModule 接口和 IHttpHandler 接口之间组织和共享数据的键/值集合。

项目 它只针对单个请求,您需要一个会话变量来解决这种情况。

于 2013-05-21T04:14:52.440 回答