了解Global.asax中的路由(asp.net-mvc)

Pad*_*rni 10 asp.net-mvc url-routing global-asax

在Global.asax中,以下是什么意思?

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");     
Run Code Online (Sandbox Code Playgroud)

Kei*_*ith 11

这是学习MVC真正令人沮丧的事情之一 - 这个功能的文档非常糟糕 - 几乎没有任何东西:http://msdn.microsoft.com/en-us/library/dd470170(VS.100).aspx.

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)

这允许所有的something.axd文件在MVC之外运行 - 最后"{*pathInfo}"允许忽略查询字符串(它是一种通配符).

请注意,这不会将任何此类通配符应用于路径,因此:

trace.axd?clear=1 //excluded from MVC

mySubFolder/customResource.axd //MVC passed to mySubFolderController.customResource()
Run Code Online (Sandbox Code Playgroud)

很有帮助.除了"{resource}"和"{*pathInfo}"之外,我一直无法找到任何关于确切内容和不支持关键字的文档.

但是,有一个几乎完全没有记录的功能,可以让您更多地控制这些被忽略的路径:

//ignore all WebForms .aspx/.asmx/.ashx calls anywhere
routes.IgnoreRoute( "{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" } );
Run Code Online (Sandbox Code Playgroud)

如果传递带有属性的匿名初始化对象,则该属性将成为可在路径中使用的关键字.

你不能在路线中传递正则表达式,但你可以在这个anon属性中.


Dav*_*vid 0

它告诉路由引擎忽略此请求并将其留给 ASP.NET Webforms 来处理。

这对于使用处理程序 elmah.axd 的 ELMAH 日志记录非常有用。