私は最近、ASP.NET MVC アクションのエラーの根本原因を見つける必要があるという不運に見舞われました。エラーは、アクションで宣言されたアクション フィルターの 1 つにあることが判明しました。ただし、このエラーを見つけるのはほとんど運が良かったので、妥当な時間よりも時間がかかりました。今後、ASP.NET MVC アクション フィルターの問題をどのようにデバッグできますか?
特に:
- 特定のリクエストに対してどのフィルタがどの順序で実行されているかを確認するにはどうすればよいですか?
- これらのフィルタを通過できますか?
- 根本原因を見つけるのに役立つように、少なくとも各フィルター間で実行するフックを取得できますか (たとえば、状態をトレースすることによって)。
- フィルターがリクエストを中止したり、例外を引き起こしたりしたときにフックできるイベントはありますか?
VS.NET デバッガーを使用してみました。ただし、有用な方法でフィルターにステップインすることはありません。要求の前に実行を一時停止すると、サーバーはデバッガーを適切に待機しますが、[ステップ イン] または [ステップ オーバー] を使用すると、フィルターを通過せずに続行されます (コードがオフになっているだけです)。どのフィルターが登録されているかを事前に知っていれば、おそらくブレークポイントを設定できますが、特に一部のフィルターはサードパーティのコードに含まれているため、これはほとんど実用的ではありません。