2009-01-13 2 views
1

Si j'ai une page avec outputcaching (appelons-le Employees.aspx) qui accepte un paramètre (par querystring) appelé Company comme ceci:Existe-t-il un moyen d'éviter les doublons de cache de pages tout en autorisant les URL insensibles à la casse?

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

Comment puis-je éviter les entrées du cache de la page en double pour tubé différemment URL comme:

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

J'ai activé la mise en cache de sortie par la directive OuputCaching comme suit:

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

Est-il possible de définir programatically ce que la « clé de cache unique » pour cette demande particulière devrait être

Répondre

3

Une méthode hack-esque de le faire serait de faire un VaryByCustom (au lieu de VaryByParam) et faire le. ToLower/.ToUpper dans là.

Modifier la directive OutputCache à quelque chose comme ceci:

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

... et ajouter une dérogation à Global.asax.cs pour 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; 
} 
Questions connexes