带有 Redis 的 OutputCache 在 Localhost 上工作,但不在 Azure WebApp 上工作
OutputCache with Redis working on Localhost but not Azure WebApp
我正在编写一个标准的 MVC 5 应用程序,并在控制器上设置了 OutputCache 标签,还安装了 StackExange.Redis 和 RedisOutputCache。相应地配置了 web.config。
当我 运行 在本地主机中缓存时,缓存工作完美,但是一旦部署到 Azure WebApp 中,缓存就无法工作,因为我看到发生了变化。此外,在远程调试应用程序时,我在控制器视图操作中看到断点命中。
我一直在寻找解决方案,但我找不到任何答案,甚至没有找到类似的答案。我已经在 Azure 支持上提出了问题。
所以我的问题是,有什么东西可以使 Azure WebApp 的行为与本地解决方案不同吗?
我如何调试 Outputcache 以检查为什么它没有命中缓存版本?
其他信息:我在 Redis Cli 中看到 Outputcache 正在存储缓存版本,只是它没有 return 它。
谢谢
好吧,我终于找到问题了。
我在 global.asax
的 VaryByCustomString()
函数中使用 Thread.CurrentThread.CurrentCulture.Name
来创建基于文化的缓存版本。
然而,一旦部署到 Azure WebApp,这种文化似乎没有设置,所以检查失败并且 OutputCache
认为 Redis 中没有任何版本。
我正在编写一个标准的 MVC 5 应用程序,并在控制器上设置了 OutputCache 标签,还安装了 StackExange.Redis 和 RedisOutputCache。相应地配置了 web.config。
当我 运行 在本地主机中缓存时,缓存工作完美,但是一旦部署到 Azure WebApp 中,缓存就无法工作,因为我看到发生了变化。此外,在远程调试应用程序时,我在控制器视图操作中看到断点命中。
我一直在寻找解决方案,但我找不到任何答案,甚至没有找到类似的答案。我已经在 Azure 支持上提出了问题。
所以我的问题是,有什么东西可以使 Azure WebApp 的行为与本地解决方案不同吗? 我如何调试 Outputcache 以检查为什么它没有命中缓存版本?
其他信息:我在 Redis Cli 中看到 Outputcache 正在存储缓存版本,只是它没有 return 它。
谢谢
好吧,我终于找到问题了。
我在 global.asax
的 VaryByCustomString()
函数中使用 Thread.CurrentThread.CurrentCulture.Name
来创建基于文化的缓存版本。
然而,一旦部署到 Azure WebApp,这种文化似乎没有设置,所以检查失败并且 OutputCache
认为 Redis 中没有任何版本。