2010-10-01 16 views
1

Mise en cache J'utilise OutputCache sur une action comme celle-ci:Problème avec ASP .Net MVC 2.0

[OutputCache(Duration = 14400, VaryByParam = "none")] 
public ContentResult Catalog() 
{ 
return ...; 
} 

et ma fonction RegisterRoutes en Global.asax.cs contient la route:

routes.MapRoute(
    "XMLRoute", // Route name 
    "{site}/catalog.xml", // URL with parameters 
    new { controller = "Home", action = "Catalog" } // Parameter defaults 
); 

Le Cartes de route urls comme:

  • example.com/site1/catalog.xml
  • exemple. com/site2/catalog.xml
  • example.com/whatever/catalog.xml

à l'action de catalogue.

Je crois que le résultat attendu serait de retourner le contenu statique après la première demande pour chaque paramètre passé, mais le contenu n'est pas mis en cache correctement. Dois-je modifier l'action Catalogue pour utiliser un paramètre, puis spécifier VarybyParam = "none" et ajouter un paramètre avec UrlParameter.Optional à la fonction MapRoute ou y a-t-il quelque chose d'autre qui se passe ici?

+0

Pouvez-vous élaborer sur «le contenu n'est pas mis en cache correctement»? Quels résultats voyez-vous, et en quoi diffèrent-ils exactement de vos attentes? – bzlm

+0

Désolé, je devrais être plus clair à ce sujet. Ce que je veux dire, c'est que le contenu n'est pas récupéré du cache, il est créé à nouveau pour chaque requête. – gmakrygiannis

Répondre

0

Après beaucoup d'essais et d'erreurs, je trouve que la meilleure façon était d'utiliser:

[OutputCache(Duration = 14400, VaryByParam = "*")] 

et fournir les paramètres à l'aide redirigent afin que les valeurs par défaut sont utilisés et contenu mis en cache est affichée.