【问题标题】:Unable to access TempData inside my HandleUnauthorizedRequest无法访问我的 HandleUnauthorizedRequest 中的 TempData
【发布时间】:2014-10-24 09:17:50
【问题描述】:

我在我的 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”

谁能给点建议? 谢谢

【问题讨论】:

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


    【解决方案1】:

    尝试使用控制器底座,

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

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

    【讨论】:

    • 但在我的情况下,我只需要在重定向登录操作方法中使用它...谢谢
    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多