My WebApi filter method OnActionExecuted
is being called twice.
My filter (I make it as simple as possible):
public class NHibernateActionFilter : ActionFilterAttribute
{
// [Inject]
// public ISessionFactoryProvider sessionFactoryProvider { get; set; }
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
var a = 5;
var b = a;
//new BaseSessionProvider(sessionFactoryProvider).EndContextSession();
}
}
My setup:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
//http://stackoverflow.com/questions/9521040/how-to-add-global-asp-net-web-api-filters
FilterConfig.RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters);
}
public class FilterConfig
{
public static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection filters)
{
filters.Add(new NHibernateActionFilter());
}
}
In debugger I catch OnActionExecuted
twice with the same actionExecutedContext
. Why?
UPD
Controller
public class BankSmsController : ApiController
{
[AcceptVerbs(HttpVerbs.Get)]
public int GetTest()
{
return 1;
}
}
Best Answer
I have a suspicion, that this strange behavior can be fixed by either overriding
AllowMultiple
property of filter and returning false, or applyingAttributeUsage
attribute withAllowMultiple
set to false too (this influences on default implementation ofAllowMultiple
property of filter.At least in our project this helped (we have filters injected via Autofac).