私は奇妙な動作に出くわしましたが、私がここで正しい方向にいるかどうかはわかりません。ControllerInstanceFilterProviderのフィルタの前に実行されたGlobalFilterCollectionのフィルタ
Controller
ベースクラスのOnException
メソッドをオーバーライドするコントローラがあります。次のように
public class ControllerFiltersController : Controller {
public ActionResult Index() {
throw new NotImplementedException();
}
protected override void OnException(ExceptionContext filterContext) {
Trace.TraceInformation(
"ControllerFiltersController Exception: " + DateTime.Now.ToString("hh:mm:ss.fff")
);
}
}
私もカスタムExceptionFilterを持っている:私は期待したもの
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
filters.Add(new HandleErrorCustom());
}
がコントローラインスタンスはこちらです:
public class HandleErrorCustom : IExceptionFilter {
public void OnException(ExceptionContext filterContext) {
Trace.TraceInformation(
"HandleErrorCustom Exception Message: " + DateTime.Now.ToString("hh:mm:ss.fff")
);
}
}
をその後、私はグローバルフィルタとしてそれを登録しましたControllerInstanceFilterProvider
によって提供されるフィルタの順番がInt32.MinValue
およびtであるため、グローバルフィルタの前に実行するフィルタ彼の範囲はFilterScope.First
です。
としても、ここで説明:ASP.NET MVC 3 Service Location, Part 4: Filters
しかし、結果は異なります。
iisexpress.exe情報:0:HandleErrorCustom例外メッセージ: 06:56:49.972
iisexpress.exe情報:0:ControllerFiltersController例外: 06:56:49.974
これはASP.NET MVC 4アプリケーションであり、ASP.NET MVC 3のフィルタの順序付け動作に影響する変更は認識していません。ここでは何が欠けていますか?
今、私はそれを手に入れました。したがって、値が低く、アクションのリターン側で実行されるフィルタが最初に実行されます。ありがとう! – tugberk