首页 > 解决方案 > 带有 Redis 的 OutputCache 可在 Localhost 上运行,但不能在 Azure WebApp 上运行

问题描述

我正在编写一个标准的 MVC 5 应用程序,并在控制器上设置 OutputCache 标记,还安装了 StackExange.Redis 和 RedisOutputCache。相应地配置了 web.config。

当我在 localhost 中运行它时,缓存可以完美运行,但是一旦部署到 Azure WebApp 中,缓存就无法正常工作,因为我看到了正在发生的更改。此外,在远程调试应用程序时,我在控制器视图操作中看到断点命中。

我一直在寻找解决方案的日子,但我找不到任何答案,甚至没有类似的答案。我已经在 Azure 支持上提出了一张票。

所以我的问题是,有什么东西可以使 Azure WebApp 的行为不同于本地解决方案吗?我如何调试 Outputcache 以检查它为什么没有达到缓存版本?

附加信息:我在 Redis Cli 中看到 Outputcache 正在存储缓存的版本,只是它没有返回它。

谢谢

标签: c#azureredisoutputcache

解决方案


好吧,我终于找到了问题所在。

Thread.CurrentThread.CurrentCulture.NameVaryByCustomString()函数中global.asax使用创建基于文化的缓存版本。

但是,一旦部署到 Azure WebApp,这种文化似乎没有设置,因此检查失败并且OutputCache认为 Redis 中没有任何版本。


推荐阅读