nie mogę sobie przypomnieć, gdzie mam to z, ale byłem rozglądać się za czymś podobnym, natomiast tył i znaleźć artykuł lub coś gdzieś, że zawierał ten filtr rejestrowania:
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");
}
}
aby go użyć, wystarczy dodać go do globalnych filtrów w global.asax:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new LogActionFilter());
}
Muszę teraz sprawdzić, czy mogę znaleźć źródło.
Edytuj: Znaleziono. To było z this question.
PS można również użyć metody programowania aspektowego (AOP) i wstrzyknąć za pomocą funkcji postsharp lub spring.net silnika, za pomocą którego można również przechwytywać połączenia (które wykracza poza zwykły kontroler, ale można ustawić wyrażenie w pliku konfiguracyjnym, aby zastosować wobec nich klasy o nazwie "kontroler". –