Считывает ли VaryByParam = «*» также RouteData.Values?

в моем проекте 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

5
задан Anwar Chandra 23 December 2010 в 12:34
поделиться