NoCache没有按预期工作

时间:2014-01-07 07:16:57

标签: asp.net-mvc-4 c#-4.0 browser-cache

我使用名为[NoCache]的动作过滤器通过按下浏览器后退按钮来禁用登录后访问登录页面。代码如下。

public class NoCacheAttribute : ActionFilterAttribute
    {
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
            filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
            filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
            filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            filterContext.HttpContext.Response.Cache.SetNoStore();

            base.OnResultExecuting(filterContext);
        }
    } 

然后我在登录页面中提到它,如下所示。

        [HttpPost]
        [NoCache]
        public ActionResult Index(Login objLogin)
        {

            return RedirectToAction("Index", "Blood");
        }

但结果出人意料。该控件转移到url:http://localhost:4506/Account/Login?ReturnUrl=%2fBlood

,而不是重定向到Blood / Index操作

我怎样才能纠正这个问题?感谢。

1 个答案:

答案 0 :(得分:1)

这可能与表单身份验证功能有关。你需要它吗?如果没有,就不要使用它。

有关详细信息,请参阅: How to remove returnurl from url?