[asp.net-mvc]这两个的 ASP.NET MVC IgnoreRoute 指令之间的区别是什么?

发布时间: 2017/3/25 11:37:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

默认的 ASP.NET MVC 3 项目模板包含以下 IgnoreRoute 指令︰

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

我已经看了多个项目将此行更改 (包括课件的 DataExplorer) 为相反一些看起来像︰

routes.IgnoreRoute("{*allaxd}", new {allaxd = @".*\.axd(/.*)?"});

任何人都可以解释在什么情况下或在一般为什么默认 .axd 路线忽略不是足够的而这后者的版本会? 或者反过来说,为什么可能一个人选择不使用这后者的版本并相反就跟着默认值?

我不得不承认我不完全理解 IgnoreRoute 语法和关于这个专题的 MSDN 文件是相当简洁。

解决方法 1:

还有在菲尔 Haack 博客解释︰使路由忽略请求的文件扩展名

其基本思想,引用菲尔,是︰

一种解决办法是添加适当忽略路由来指示路由应该忽略这些要求。不幸的是,我们不能做这样的事情︰

{*path}.aspx/{*pathinfo}

我们只允许一个全部捕获路线,它必须发生在 URL 的末尾。然而,你可以采取以下方法...

怎么在这里是技术 Eilon 表明我是所有的 Url 映射到这些路线,但然后限制哪条路线通过约束字典忽略。所以在这种情况下,这些路线将匹配 (和因此忽略) favicon.ico (无论哪个目录) 的所有请求以及.aspx 文件的请求。由于路由来忽略这些要求告诉我们,将发生正常 ASP.NET 处理这些请求。

赞助商