我们知道路由遵循RouteConfig.cs中RegisterRoutes函数提供的路由,该路由定义了默认路由中的控制器和操作。
我的项目只有默认路由,例如:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
因此,路由如何检测到我们是在访问某些动作还是指向图像,css或js之类的文件。
答案 0 :(得分:0)
简短的答案是,对具有的资源的任何请求。 IIS直接以其名称提供服务,而无需调用MVC路由。相反,不包含的请求。传递给MVC进行路由。重要的是,这只是默认行为。
作为一项快速测试,请为项目中不存在的任何资源(例如\asdf
)创建一个url,并注意由MVC生成的404错误。现在,用\asdf.asdf
重复测试,并注意IIS产生了404错误。
可以使用web.config中的指令更改此行为。例如,请参见How do I route images using ASP.Net MVC routing?