в моем проекте asp.net mvc я включаю кэширование вывода на контроллере, как показано ниже
[OutputCache(Duration = 100, VaryByParam = "*", VaryByHeader = "X-Requested-With")]
public class CatalogController : BaseController
{
public ActionResult Index(string seller)
{
// I do something
}
}
, он отлично работает, пока не создам свой собственный класс Route, как показано ниже
public class MyRoute : Route
{
// there is a constructor here..
// I override this method..
// just to add one data called 'seller' to RouteData
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var data = base.GetRouteData(httpContext);
if (data == null) return null;
var seller = DoSomeMagicHere();
// add seller
data.Values.Add("seller", seller);
return data;
}
}
, а затем действие метод примет в качестве параметра продавца
. Я тестировал его, всегда предоставляя другой параметр seller
, но он принимает вывод из кеша вместо вызова метода.
действительно ли установка VaryByParam = "*" также зависит от RouteData.Values в asp.net mvc?
Я использую ASP.Net 4 MVC 3 RC 2