в моем проекте 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
в качестве параметра. Я проверил это, всегда предоставляя другой параметр seller
, но он берет вывод из кэша вместо вызова метода.
Значения параметра VaryByParam = "*" также зависят от RouteData.Values, в asp.net mvc?
Я использую ASP.Net 4 MVC 3 RC 2