0

我们有一个现有的 MVC2 项目,我们刚刚升级到 MVC4,首先按照这些步骤到达 MVC3,然后按照这些步骤到达 MVC4。

输出缓存在我们的 MVC2 项目中已经成功运行了很长时间,但是在 MVC4 版本之后它就不起作用了。

我添加了一个简单的控制器来测试缓存:

 public class TestController : Controller
 {
    [OutputCache(Duration = 600, VaryByParam = "*")]
    public ActionResult CacheTest()
    {
        return Content(DateTime.Now.ToLongTimeString());
    }
 }

每次刷新此页面时,浏览器的时间输出都会更改。

在相同的解决方案中创建一个新的 MVC3 项目,然后升级到 MVC4,然后复制相同的代码按预期工作。

所以在我们现有的代码或配置中一定有什么东西破坏了输出缓存。

我还尝试从 web.config 文件中删除大量内容,认为某些东西会导致问题 - 不走运。

有关如何修复或调试此问题的任何建议?

更新:

在任何视图中呈现上面的 CacheTest 操作将显示缓存结果 - 即每次刷新时日期都不会改变:

<% Html.RenderAction("CacheTest", "Test"); %>

为什么这行得通,但来自浏览器的操作 url 永远不会被缓存?

4

1 回答 1

0

原来这是第三方库的问题 - 51Degrees。这是该库的最新版本中引入的一个问题。在从 MVC2 转换到 MVC4 的过程中,我安装了 nuget 包,它比我使用的前一个版本晚了几个版本。

误报 - 与 ASP.NET MVC 升级或任何与 ASP.NET 相关的内容无关。

于 2012-08-11T03:39:17.603 回答