My WebApiフィルタメソッドOnActionExecuted
が2回呼び出されています。 マイフィルタ(私はそれをできるだけシンプルにする):WebApi 2回呼び出されるアクションフィルタ
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();
}
}
マイセットアップ:デバッガで
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());
}
}
は、私は同じactionExecutedContext
で二回OnActionExecuted
をキャッチ。どうして?
UPD
Controller
public class BankSmsController : ApiController
{
[AcceptVerbs(HttpVerbs.Get)]
public int GetTest()
{
return 1;
}
}
「Inject」属性がコメントアウトされていることに気付きました。フィルタを設定するNInject設定が2回追加される可能性がありますか?すべてのスタートアップコードの実行が終了した後、グローバルフィルタコレクションにフィルタのインスタンスが1つしかないことを確認しましたか? – levelnis
全く何もありません。 'kernel.BindFilter(FilterScope.Global、1);' –
を削除してコントローラを表示できますか? –