Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义输出缓存提供程序未用于子操作缓存_C#_Asp.net Mvc_Caching - Fatal编程技术网

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

C# 自定义输出缓存提供程序未用于子操作缓存,c#,asp.net-mvc,caching,C#,Asp.net Mvc,Caching,因此,我有一个CustomOutputCacheProvider,它扩展了抽象类OutputCacheProvider,因为我的网页可以用不同的语言查看。服务器知道语言。我的意思是服务器知道UI的当前文化(例如“en-US”)。因此,我扩展OutputCacheProver的原因是让这种语言处理保持在服务器端 基本上,对于不同的语言,自定义提供程序存储不同的数据。但问题是,(除了这个,一切都很好,提供程序在web.config中注册)对于ChildActionOnly操作,不使用该提供程序。我的

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

基本上,对于不同的语言,自定义提供程序存储不同的数据。但问题是,(除了这个,一切都很好,提供程序在web.config中注册)对于
ChildActionOnly
操作,不使用该提供程序。我的意思是,假设返回一个
PartialView
的操作,并且其上有一个
ChildActionOnly
OutputCache
属性。
PartialView
未被我注册的提供程序缓存。或者我不知道,还有别的事情发生了。对于我尝试过的其他任何东西,我的提供商都工作得很好。我想,对于子操作缓存,ASP.NET MVC正在使用其他提供程序本身。无论如何,在这里可以做什么?

我想最好的办法是重写
GetVaryByCustomString
,并确保自定义字符串包含该语言。然后它应该可以从任何提供者层/实现中找到。但是,这可能只是在
VaryByCustom
有值时才检查,这意味着调整
[OutputCache(…)]
以包含某些内容-例如
[OutputCache(…VaryByCustom=“language;”]

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


注意:使用这种方法,您一开始就不需要自定义输出缓存提供程序。

我想就是这样。你能举一个小例子说明怎么做吗?