Код не может попасть в файл атрибутов

Я хочу создать ответ журнала, но не могу получить результат.
Я не могу попасть в файл LogResponse.

У меня есть файл

public class LogResponse : ActionFilterAttribute

{
    public LogResponse()
    {

    }
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        Log("OnActionExecuting", filterContext.RouteData);
        Debug.WriteLine("TEST ");
    }

    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);
        System.IO.StreamWriter file = new System.IO.StreamWriter(@"F:test.txt");
        file.WriteLine(message);
        file.Close();
    }
}

Теперь у меня есть домашний контроллер, как :

[System.Web.Http.AllowAnonymous]
[LogResponse]
public class HomeController : ApiController
{       
    [System.Web.Http.HttpGet]

    public string Index()
    {
        return "Test API";
    }
}

Здесь, когда я сохраняю точку отладки, я вижу, что она попадает в метод индекса, но не попадает в метод ответа журнала.

Я использую это в первый раз.
Я также добавил маршрут. И в url, я ударил его с API / Home / Index.

Может ли кто-нибудь дать мне знать, почему я не нажимаю файл ответа журнала ?

1 ответ

  1. Вы используете Web API 2. убедитесь, что вы используете правильный фильтр:

    «Фильтры для Web API отличаются от фильтров для MVC. Фильтры Web API находятся в системе.Сеть.Http.Фильтры пространства имен.

    И зарегистрировать фильтр:

    public static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection filters)
    {
      filters.Add(new LogRequest());
    }
    
    protected void Application_Start()
    {
      RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters);
    }