10

Global.asaxで、次は何を意味しますか?

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");     
4

4 に答える 4

11

これは、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プロパティでは渡すことができます。

于 2009-07-28T07:58:30.620 に答える
3

.axdファイルは、HTTPハンドラーによって処理される仮想ファイルです。これらは、(とりわけ)AJAXコントロール用に自動生成されたjavascriptなど、さまざまなリソースをWebページに配信するために使用されます。

これらは仮想ファイルであるため、ルーティングエンジンがこれらの要求をコントローラーにマップしようとしないようにする必要があります。ASP.NETで直接実行する必要があります。

それがラインが達成することです。

于 2009-07-28T07:57:55.457 に答える
2

これがないと、ASP.NET は AXD ハンドラーへのすべての要求をコントローラーとアクションにマップしようとします。ignoreRoute があるということは、URL がデフォルトの動作に従って URL をコントローラーにマップしないことを意味します。

于 2009-07-28T07:48:38.253 に答える
0

これは、ルーティング エンジンに対して、この要求を無視し、処理を ASP.NET Webforms に任せるように指示します。

これは、ハンドラー elmah.axd を使用する ELMAH ロギングなどに役立ちます。

于 2009-07-28T07:42:46.813 に答える