当在参数值中使用MS-DOS保留名称时,IIS给出404

当在参数值中使用MS-DOS保留名称时,IIS给出404,iis,asp.net-web-api,dos,Iis,Asp.net Web Api,Dos,我有一个ASP.NET Web API应用程序,我有一个采用一个字符串参数的操作,例如: [HttpGet] 公共HttpResponseMessageGetById(字符串id) { // ... } 它相应地注册为: config.Routes.MapHttpRoute(“资源”,“api/Resources/{id}”),新增 { controller=“Resources”, action=“GetById” }); 现在,当有人调用api/resources/con时,IIS给出4

我有一个ASP.NET Web API应用程序,我有一个采用一个字符串参数的操作,例如:

[HttpGet]
公共HttpResponseMessageGetById(字符串id)
{
// ...
}
它相应地注册为:

config.Routes.MapHttpRoute(“资源”,“api/Resources/{id}”),新增
{
controller=“Resources”,
action=“GetById”
});
现在,当有人调用api/resources/con时,IIS给出404。几乎任何其他值都可以,比如api/resources/somethingapi/resources/nothing

我们查看了一下,发现没有一个可以用作参数值

这似乎是一个全球性问题,因为MSDN也有:


有没有办法允许将这些名称用作路由参数值?

将其添加到Web.config的system.Web下

<httpRuntime relaxedUrlToFileSystemMapping="true" />

将其添加到Web.config的system.Web下

<httpRuntime relaxedUrlToFileSystemMapping="true" />