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

Ica*_*rus 0 asp.net-mvc operating-system

我尝试在 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              
        );
Run Code Online (Sandbox Code Playgroud)

它给出以下错误

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)
Run Code Online (Sandbox Code Playgroud)

Rom*_*kin 6

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

<system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>
     ......
</system.web>
Run Code Online (Sandbox Code Playgroud)

它应该可以解决这个问题。