2009-01-13 65 views
1

如果我有outputcaching一個頁面(我們稱之爲Employees.aspx),它接受一個參數(通過查詢字符串)稱爲公司這樣的:有沒有辦法避免重複的頁面緩存條目,同時允許區分大小寫的URL?

 
http://www.example.com/Employees.aspx?Company=Google 

如何避免重複的頁面緩存條目不同套管網址喜歡:

 
http://www.example.com/Employees.aspx?Company=GOOGLE 
http://www.example.com/Employees.aspx?Company=GOoGlE 

我已經通過OuputCaching指令啓用輸出緩存如下:

<%@ OutputCache Duration="300" VaryByParam="Company" %> 

有什麼辦法來編程設定什麼是「唯一緩存鍵」這個特殊請求應該這樣做是做一個VaryByCustom是(而不是VaryByParam時)的

回答

3

一個黑客式的方法來做的。 ToLower/.ToUpper在那裏。

更改OutputCache指令是這樣的:

<%@ OutputCache Duration="300" VaryByCustom="Company" VaryByParam="none" %> 

...在Global.asax.cs中添加替代的GetVaryByCustomString:

public override string GetVaryByCustomString(System.Web.HttpContext context, string custom) 
{ 
    string CustomValue = ""; 
    switch (custom.ToLower()) 
    { 
     case "company": 
      CustomValue = context.Request.QueryString["company"] ?? ""; 
      CustomValue = CustomValue.ToLower(); 
      break; 
    } 
    return CustomValue; 
} 
相關問題