Global.asaxで、次は何を意味しますか?
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Global.asaxで、次は何を意味しますか?
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
これは、MVCの学習に関して本当に苛立たしいことの1つです-この機能のドキュメントはひどいです-そこにはほとんど何もありません:http://msdn.microsoft.com/en-us/library/dd470170 (VS.100).aspx 。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
これにより、すべてのsomething.axdファイルをMVCの外部で実行できるようになります。最後の「{* pathInfo}」により、クエリ文字列を無視できます(一種のワイルドカードです)。
これはパスにそのようなワイルドカードを適用しないことに注意してください。したがって、次のようになります。
trace.axd?clear=1 //excluded from MVC
mySubFolder/customResource.axd //MVC passed to mySubFolderController.customResource()
役に立った。「{resource}」と「{*pathInfo}」以外のキーワードとしてサポートされているものとサポートされていないものについて、適切なドキュメントを見つけることができませんでした。
ただし、これらの無視されたルートをより詳細に制御できる、ほぼ完全に文書化されていない機能があります。
//ignore all WebForms .aspx/.asmx/.ashx calls anywhere
routes.IgnoreRoute( "{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" } );
プロパティを使用して初期化されていないオブジェクトを渡すと、そのプロパティはルートで使用できるキーワードになります。
ルートで正規表現を渡すことはできませんが、このanonプロパティでは渡すことができます。
.axdファイルは、HTTPハンドラーによって処理される仮想ファイルです。これらは、(とりわけ)AJAXコントロール用に自動生成されたjavascriptなど、さまざまなリソースをWebページに配信するために使用されます。
これらは仮想ファイルであるため、ルーティングエンジンがこれらの要求をコントローラーにマップしようとしないようにする必要があります。ASP.NETで直接実行する必要があります。
それがラインが達成することです。
これがないと、ASP.NET は AXD ハンドラーへのすべての要求をコントローラーとアクションにマップしようとします。ignoreRoute があるということは、URL がデフォルトの動作に従って URL をコントローラーにマップしないことを意味します。
これは、ルーティング エンジンに対して、この要求を無視し、処理を ASP.NET Webforms に任せるように指示します。
これは、ハンドラー elmah.axd を使用する ELMAH ロギングなどに役立ちます。