繁体   English   中英

自定义输出缓存提供程序未用于子操作缓存

[英]Custom Output cache provider not being used for child action caching

所以我有这个CustomOutputCacheProvider ,它扩展了abstract class OutputCacheProver因为我的网页可以用不同的语言查看。 语言是服务器已知的。 我的意思是服务器知道UI的当前文化(例如“en-US”)。 所以我扩展OutputCacheProver的原因是让这种语言处理保持在服务器端,就像它一样。

基本上对于不同语言,Custom提供程序存储不同的数据。 但问题是,(一切都没关系,但这个,提供程序在web.config中注册) ChildActionOnly操作不使用此提供程序。 我的意思是,假设返回PartialView并在其上具有ChildActionOnlyOutputCache属性的操作。 我注册的提供程序不缓存PartialView 或者我不知道,还有其他事情正在发生。 对于我尝试过的任何其他事情,我的供应商都在努力工作。 我想对于Child动作缓存ASP.NET MVC正在使用其他一些提供者本身。 无论如何,在这里可以做些什么?

我怀疑你最好的选择是覆盖GetVaryByCustomString并确保自定义字符串包含该语言 然后它应该从任何提供者层/实现找到工作。 但是,可能只有当VaryByCustom有一个值时才会检查,这意味着调整你的[OutputCache(...)]以包含一些东西 - 例如[OutputCache(... VaryByCustom="language;...")]

请注意,如果您已经有一个GetVaryByCustomString (用于VaryByCustom ),那么您的语言特定部分应该是所有其他问题的补充

注意:使用此方法,您首先不需要自定义输出缓存提供程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM