为什么 asp.net mvc 5 中的路由参数不接受值“COM1”到“COM9”

本文关键字:不接受 COM9 COM1 参数 路由 net asp mvc 为什么 | 更新日期: 2023-09-27 17:56:46

我有一个空白的 asp.net mvc 5 应用程序,当我尝试使用任何值(任何字符串或整数值)的默认路由/Home/Index/{id} 时,它可以正常工作,除了值 COM1 到 COM9

例如,如果我尝试打开/Home/Index/COM1,则会出现 404 错误。

这是 mvc 保留字吗?或者会发生什么?

这是控制器和操作:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

这是路由配置:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

为什么 asp.net mvc 5 中的路由参数不接受值“COM1”到“COM9”

好吧,似乎 asp.net mvc 有一些路由中不允许的保留文件名:

http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx/

可以通过将其放入 web.config 来绕过此限制:

<configuration>
  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>
  </system.web>
</configuration>