ASP.net MVC 中 URL 中的保留关键字,如 CON、PRN、NUL

reserved keywords like CON, PRN, NUL in URL in ASP.net MVC

我试图在 ASP.net MVC 中使用 id 作为 CON 命中 URL。

路由

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }// Parameter defaults              
        );

出现以下错误

2015-04-29 08:25:22,325 [8] FATAL Myapplication.Global - Application ERROR === (null)
System.Web.HttpException (0x80004005)
   at System.Web.CachedPathData.GetPhysicalPath(VirtualPath virtualPath)
   at System.Web.CachedPathData.GetConfigPathData(String configPath)
   at System.Web.HttpContext.GetFilePathData()
   at System.Web.HttpContext.GetRuntimeConfig()
   at System.Web.HttpContext.get_ImpersonationToken()
   at System.Web.ClientImpersonationContext.Start(HttpContext context, Boolean throwOnError)
   at System.Web.ThreadContext.AssociateWithCurrentThread(Boolean setImpersonationContext)
   at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext)
   at System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error)

有几个保留关键字,如 CON、PRN、NUL 等(我相信这些保留在 Windows OS 系列中是为了向后兼容)。只需添加到您的 web.config:

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

应该可以解决问题。