MVC 5 アプリケーションで HandleErrorAttribute を使用する最善の方法について質問があります。ご存知のように、この属性を次のようにグローバル フィルターに追加できます。
filters.Add(new HandleErrorAttribute{View = "Error"});
これには、未処理の例外がアプリの任意のレベルでスローされるたびに、アプリが「エラー」ビューを表示することが含まれます。ただし、別のグローバル承認フィルターまたはアクション フィルターに何らかの例外を生成するロジックがある場合、例外が初めてスローされたときに、アプリはエラー ビューにリダイレクトしようとし、再び他のフィルターの実行が開始され、同じ例外が生成されます。繰り返しますが、ループを避けるためにasp.netはアプリを終了します。では、この HandleErrorAttribute を使用してそのような動作を回避する最善の方法は何ですか? ありがとう!
編集: いくつかのデバッグの後、これはHandleErrorAttributeの通常の動作ではないことがわかったので、カスタムルートfeを使用する場合にのみループが発生します
{key}/{controller}/{action}
フィルター ロジックで何らかのエラーが発生すると、アプリはエラー ビューにリダイレクトしようとしますが、別のフィルター ロジックが再び実行を開始し、{key} ルート パラメーターに「エラー」値が表示されるので、不要です。行動。デフォルト ルートを使用すると、{controller}/{action}
これは発生せず、グローバル フィルタ ロジックを 2 回実行しなくても、正確にエラー ビューに到達します。