私たちのショップは、 system.webServer\handlersの下の web.config で定義されたカスタムおよびサードパーティの HTTP ハンドラーを利用する大規模な Web アプリケーションに ASP.NET MVC を統合しています。このように HTTP ハンドラーを活用することは、私たちにとって非常に便利です。アプリケーションを再コンパイルしたり、実際のハンドラー ページを製品の各インスタンスの Web スコープ内のどこかにディスク上に置いたりする必要がないからです。
ランタイムが web.config で定義されたハンドラーを尊重できるように、global.asax に明示的な Ignore Routes を追加することが本当に必要ですか? system.webServer\handlers で定義されたハンドラーがチェックされた後にWeb.Routing が呼び出されると思っていました (その逆ではありません)。
機能が追加されたときに web.config からハンドラーを追加/削除できるモジュール設計を使用します。MVC ルーティングの導入により、web.config で定義されている可能性のあるすべてのハンドラーについて、global.asax ファイルに無視ルートを追加する必要があるようです。
これらのハンドラへの実際のファイルはディスク上に存在しないことに注意してください。それらは仮想であり、アセンブリに埋め込まれています。global.asax で明示的な Ignore Route を必要とするサード パーティ ハンドラーの例を次に示します。
<system.webServer>
<handlers>
<!-- telerik radcontrols -->
<add name="TelerikDialogHandler" verb="*" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler, Telerik.Web.UI, Version=2009.1.402.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4"></add>
</handlers>
</system.webServer>
したがって、System.Web.Routing を使用する場合は、記録のために、Web.Config で指定された Http ハンドラーの無視ルートを含める必要がありますか? それとも、私は何か間違ったことをしていますか?