Я не могу вспомнить, где я получил от этого, но я искал вокруг что-то подобное некоторое время назад и нашел статьи или что-то где-то, что содержащиеся этот протоколирования фильтр:
public class LogActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Log("OnActionExecuting", filterContext.RouteData);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
Log("OnActionExecuted", filterContext.RouteData);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
Log("OnResultExecuting", filterContext.RouteData);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
Log("OnResultExecuted", filterContext.RouteData);
}
private void Log(string methodName, RouteData routeData)
{
var controllerName = routeData.Values["controller"];
var actionName = routeData.Values["action"];
var message = string.Format("{0} controller: {1} action: {2}", methodName, controllerName, actionName);
Debug.WriteLine(message, "Action Filter Log");
}
}
чтобы использовать его, просто добавьте его в глобальных фильтры в global.asax:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new LogActionFilter());
}
Теперь я посмотрю, смогу ли я найти источник.
Редактировать: Найдено. Это было от this question.
PS Вы также можете использовать некоторый метод аспектно-ориентированного программирования (AOP) и вводить через postsharp или spring.net имеет движок, который вы можете использовать для перехвата вызовов (что выходит за рамки только контроллера, но вы можете установить регулярное выражение в файле конфигурации для применения, я верю в классы с именем «Контроллер» на них. –