MVC路由如何检测文件路径

How does MVC routing detects file path

正如我们所知,路由遵循 RouteConfig.cs 中 RegisterRoutes 函数中提供的路由,它定义了默认路由中的控制器和操作。

我的项目只有默认路由,如:

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

那么路由如何检测我们是在访问某些动作还是指向图像、css 或 js 等文件。

简短的回答是任何对具有 .在其名称中直接由 IIS 提供服务,而无需调用 MVC 路由。相反,不包含 .传递给 MVC 进行路由。重要的是,这只是默认行为。

作为快速测试,为项目中不存在的任何资源(例如 \asdf)制作一个 url,并注意 MVC 生成的 404 错误。现在用 \asdf.asdf 重复测试,注意 404 错误是由 IIS 生成的。

可以使用 web.config 中的指令更改此行为。例如,参见 How do I route images using ASP.Net MVC routing?