Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
是否可以使用asp.net页面级缓存,并根据参数和本地化进行更改_Asp.net_Caching - Fatal编程技术网

是否可以使用asp.net页面级缓存,并根据参数和本地化进行更改

是否可以使用asp.net页面级缓存,并根据参数和本地化进行更改,asp.net,caching,Asp.net,Caching,我想在我的asp.net页面上使用页面级缓存。vary by param工作正常-但是,页面内容以原始请求的语言缓存。如果请求相同的url/param,并且用户在与第一个请求不同的语言环境中查看(例如,法语而不是英语)-缓存将以原始请求的语言(英语)返回页面内容。有没有一种方法可以基于vary by param和基页类中的一个值(比如从Thread.CurrentThread.CurrentUICulture.TwoLetterIsLanguageName返回的属性值)缓存页面 使用dataca

我想在我的asp.net页面上使用页面级缓存。vary by param工作正常-但是,页面内容以原始请求的语言缓存。如果请求相同的url/param,并且用户在与第一个请求不同的语言环境中查看(例如,法语而不是英语)-缓存将以原始请求的语言(英语)返回页面内容。有没有一种方法可以基于vary by param和基页类中的一个值(比如从Thread.CurrentThread.CurrentUICulture.TwoLetterIsLanguageName返回的属性值)缓存页面

使用datacache,您可以指定缓存名称。出现此问题时我所做的操作是在OutputCache中将pagename+本地化为cachename的pagedata缓存

,设置
VaryByCustom=“Language”
,并通过添加以下代码更新您的Global.asax文件以覆盖HttpApplication.GetVaryByCustomString方法:

public override string GetVaryByCustomString(HttpContext context, string custom)
    {
        if (custom.Equals("Language"))
        {
            return System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
        }
        else
        {
            return base.GetVaryByCustomString(context, custom);
        }
    }

这段代码将使缓存所依赖的参数是您的页面区域性。

我使用了这段代码,第一次将语言更改为其他语言。但是,不要切换回第一语言。此代码用于根据使用的语言允许缓存,而不是更改语言,因此此函数所依赖的语言切换逻辑中可能存在问题。您如何帮助我回答我的问题:?