ASP.NET MVC OutputCache对于根URI无效。

11

我正在学习ASP.NET MVC,并被一个问题困扰。

在HomeController中,Index操作具有OutputCache属性,但似乎不起作用。

[HandleError]
public class HomeController : Controller
{
    [OutputCache(Duration=5, VaryByParam="none")]
    public ActionResult Index()
    {
        ViewData["Title"] = "Home Page" + DateTime.Now;
        ViewData["Message"] = "Welcome to ASP.NET MVC! " + DateTime.Now;

        return View();
    }
}

经过多次尝试,我发现问题出在访问控制器中的方式上。如果我通过"http://localhost:3573/"来访问它,输出缓存不起作用。但是,如果我使用"http://localhost:3575/Home/Index"来访问它,输出缓存可以正常工作。

有人知道任何解决方法可以使默认的控制器-操作输出可缓存吗?

谢谢。


我在这里看到了同样的问题。 - Mauricio Scheffer
你们中有人在使用Chrome吗?我注意到Chrome缓存存在一些奇怪的问题。 - Simon_Weaver
3个回答

7

我认为这是ASP.NET MVC中的一个错误。我们已经在我们的数据库中记录了这个问题,并将调查解决此问题的方法。

谢谢, Eilon


1
您是否也会修复设置VaryByParam为“None”时会发出HTTP响应头“Vary:*”的错误,这与应该发生的相反? - bzlm
1
@Eilon 我仍然认为这是一个问题,你有没有关于缓存根URI的建议?除了重定向到/home ;) - dove

1
根据我在微软的联系人所说,如果您从站点根目录中删除Default.aspx文件,或者如果您绝对需要它,请确保使用最新版本的ASP.NET MVC提供的那个,问题将完全消失。

1

使用 VarByParam="" 似乎可以使其正常工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接