2009-07-28 56 views

回答

0

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

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

2

没有这个ASP.NET会尝试将所有请求映射到AXD处理程序到控制器和操作。具有ignoreRoute意味着URL不会根据默认行为将URL映射到控制器。

3

.axd文件是由HTTP处理程序处理的虚拟文件。它们用于(除其他外)向网页提供各种资源,例如为AJAX控件自动生成的JavaScript等。

由于这些是虚拟文件,因此您不希望路由引擎尝试将这些请求映射到控制器。您需要由ASP.NET直接执行它们。

这就是线条所达到的。

11

这是关于学习MVC真正令人沮丧的事情之一 - 此功能的文档是可怕的 - 几乎没有什么: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(/.*)?" }); 

如果你传递一个匿名初始化的对象与属性,该属性变成了可以在路由使用关键字。

你不能在路由中传递正则表达式,但你可以在这个匿名属性中。