2014-12-02 71 views
0

當我在其中放置斷點時,GetVaryByCustomString方法未被觸發。GetVaryByCustomString方法未被觸發

的行動我想緩存取決於用戶選擇的語言:

[OutputCache(CacheProfile = "24HoursCache", VaryByCustom = "lang")] 
public ActionResult MyAction() 
{ 
    ... 
} 

在Web.config中的緩存配置文件:

<configuration> 
    ... 
    <system.web> 
     ... 
     <caching> 
      <outputCacheSettings> 
       <outputCacheProfiles> 
        <clear /> 
        <add name="24HoursCache" duration="86400" location="Client" varyByParam="none" /> 
       </outputCacheProfiles> 
      </outputCacheSettings> 
     </caching> 
    </system.web> 
    ... 
</configuration> 

而在Global.asax.cs中的文件:

public override string GetVaryByCustomString(HttpContext context, string value) 
{ 
    if (value.ToLower() == "lang") 
    { 
     return Thread.CurrentThread.CurrentUICulture.Name; 
    } 

    return base.GetVaryByCustomString(context, value); 
} 

任何幫助將不勝感激,謝謝!

回答

0

實際上,位置必須設置爲「服務器」,而不是「客戶端」。

<configuration> 
     ... 
     <system.web> 
      ... 
      <caching> 
       <outputCacheSettings> 
        <outputCacheProfiles> 
         <clear /> 
         <add name="24HoursCache" duration="86400" location="Server" varyByParam="none" /> 
        </outputCacheProfiles> 
       </outputCacheSettings> 
      </caching> 
     </system.web> 
     ... 
    </configuration> 

它的工作原理,唷!