在 Global.asax 中,以下是什么意思?
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
在 Global.asax 中,以下是什么意思?
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
这是关于学习 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(/.*)?" } );
如果您传递带有属性的未初始化对象,则该属性将成为您可以在路由中使用的关键字。
您不能在路由中传递正则表达式,但可以在此匿名属性中传递。
.axd 文件是由 HTTP 处理程序处理的虚拟文件。它们用于(除其他外)向网页提供各种资源,例如为 AJAX 控件自动生成的 javascript 等。
由于这些是虚拟文件,您不希望路由引擎尝试将这些请求映射到控制器。您需要它们由 ASP.NET 直接执行。
这就是这条线所达到的。
Without this ASP.NET would try to map all requests to AXD handlers to controllers and actions. Having the ignoreRoute means the URL will not map the URL to a controller as per the default behaviour.
它告诉路由引擎忽略此请求并将其留给 ASP.NET Webforms 来处理。
这对于使用处理程序 elmah.axd 的 ELMAH 日志记录非常有用。