I use microsoft.owin to self host WebApi in ConsoleApplication
but the ActionFilters Doesnt Fire in app . here is my actionFilter :
public class FilterA : Attribute, IActionFilter
{
public void OnActionExecuted(ActionExecutedContext filterContext)
{
if (!filterContext.RouteData.GetRequiredString("controller").Equals("account", StringComparison.CurrentCultureIgnoreCase) //long condition evaluating to true
//logic controlling these filters dont apply to Foo/Bar and Foo/Baz
&& (!filterContext.RouteData.GetRequiredString("controller").Equals("Foo", StringComparison.CurrentCultureIgnoreCase)
|| (!filterContext.RouteData.GetRequiredString("action").Equals("Bar", StringComparison.CurrentCultureIgnoreCase)
&& !filterContext.RouteData.GetRequiredString("action").Equals("Baz", StringComparison.CurrentCultureIgnoreCase))
)
)
{
filterContext.Result = new RedirectResult("~/Foo/Bar");
}
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.RouteData.GetRequiredString("controller").Equals("account", StringComparison.CurrentCultureIgnoreCase) //long condition evaluating to true
//logic controlling these filters dont apply to Foo/Bar and Foo/Baz
&& (!filterContext.RouteData.GetRequiredString("controller").Equals("Foo", StringComparison.CurrentCultureIgnoreCase)
|| (!filterContext.RouteData.GetRequiredString("action").Equals("Bar", StringComparison.CurrentCultureIgnoreCase)
&& !filterContext.RouteData.GetRequiredString("action").Equals("Baz", StringComparison.CurrentCultureIgnoreCase))
)
)
{
filterContext.Result = new RedirectResult("~/Foo/Bar");
}
}
}
and is use it like this but the FilterA Doesnt Fire . Whats The Problem
[FilterA]
[Route("RpTDAccounting")]
[HttpGet]
public IHttpActionResult RpTDAccounting()
{
return Ok();
}
should use System.Web.Http.Filters namespace instead of System.web.mvc
and impelment IActionFilter Like this :
public class FilterA : Attribute, IActionFilter
{
public bool AllowMultiple => throw new NotImplementedException();
public Task<HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
throw new NotImplementedException();
}
}