OutputCache и ведение журнала в ASP.NET MVC 2.0 - PullRequest
3 голосов
/ 12 декабря 2010

Я думаю, что, возможно, уже знаю ответ, но здесь идет.Я хочу регистрироваться при вызове определенных методов, но я разрываюсь, потому что я получаю выигрыш в производительности, используя атрибут OutputCache с этими методами.Когда метод вызывается много раз, ASP.NET MVC возвращает HTML-код из предыдущих вызовов, пока срок действия кэша не истек, и это хорошо и быстро.Но любые команды ведения журнала в этом методе не будут выполняться.

Есть ли какой-то способ включить ведение журнала для записи при вызове этих методов, не удаляя [OutputCache] и не теряя при этом преимущества в производительности?я получаю?Будет ли работать механизм регистрации на основе атрибутов, даже если атрибут [OutputCache] в основном замыкает выполнение метода, когда предыдущий вывод был кэширован?

Спасибо, Джефф

Ответы [ 2 ]

2 голосов
/ 12 декабря 2010

Вы можете использовать события Application_BeginRequest и Application_EndRequest в Global.asax для регистрации информации до и после выполнения действия.Эти события будут срабатывать даже для действий контроллера, украшенных атрибутом [OutputCache].

1 голос
/ 12 декабря 2010

Дарин Димитров прав, используйте методы Application_BeginRequest и Application_EndRequest.

Вот как вы это сделаете:

protected void Application_BeginRequest()
{
    var routeCollection = RouteTable.Routes;
    var routeData = routeCollection.GetRouteData(new HttpContextWrapper(HttpContext.Current));

    // Log
    Debug.WriteLine("Invoking " + routeData.Values["Controller"] + "::" + routeData.Values["Action"]);
}

protected void Application_EndRequest()
{
    // Log
    Debug.WriteLine("EndRequest");
}

Эти методы будут вызываться независимо от того,версия подается из кеша или нет.

...