无法访问HandleUnauthorizedRequest中的TempData

时间:2014-10-24 09:17:51

标签: asp.net asp.net-mvc-4 asp.net-mvc-5 tempdata

我已经在我的asp.net mvc web应用程序中为AuthorizeAttribute创建了自己的自定义,并且能够在登录后将用户返回到当前URL,我试图将当前URL保存在TempData中然后重定向登录操作方法,如下 -

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (!_authorize && !filterContext.HttpContext.Request.IsAjaxRequest())
            {
                var viewResult = new RedirectResult("/Account/Login");
                TempData["returnUrl"] = filterContext.HttpContext.Request.Url.PathAndQuery;


                filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;

                filterContext.Result = viewResult;
            }

但看来我在这种情况下无法引用TempData,因为上面的代码会引发以下错误: -

  

当前上下文中不存在名称“TempData”

有人可以提出建议吗? 感谢

1 个答案:

答案 0 :(得分:2)

尝试使用控制器库,

filterContext.Controller.TempData["returnUrl"] = filterContext.HttpContext.Request.Url.PathAndQuery;

同样TempData在Authorize属性中可能会出现意外行为,因为它只存在于一个请求周期中。如果是,请改用Session