1

给定以下控制器:

public class MyController : Controller
{
    [AllowAnonymous]
    [ResponseCache(VaryByQueryKeys = new string[] { "id" }]
    public async IActionResult Action1(string id)
    {
        if (User.Identity.IsAuthenticated)
           return RedirectToAction("Action2", new {id = id});

        return View();
    }


    [Authorize]
    public async IActionResult Action2(string id)
    {
        return View();
    }
}

假设经过身份验证的用户导航到“/Mycontroller/Action1/20”。响应会被缓存吗?

如果答案是肯定的,如何只缓存匿名响应?

4

1 回答 1

0

在您在这里显示的代码中,答案是否定的。RedirectToAction 将向您的站点发出一个单独的请求(301 重定向),该请求将完全独立于第一个请求(对 Action1)进行处理。

值得考虑响应缓存对非匿名用户的影响,但在这种情况下,您的场景将不受这些潜在影响的影响。

于 2017-03-24T01:41:04.317 回答