ASP.NET MVC 4 Web API无法映射包含字符串"con"的路径?

Mil*_*vic 12 asp.net-mvc asp.net-mvc-routing asp.net-web-api

字符串"con"有什么问题?

好的,我的api路由配置相当无趣:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

LocationController具有以下方法:

public List<LocationViewModel> Get(string id)
{
    return _ds.SearchLocations(id);
}
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作,除了我尝试获取这样的资源时出现HTTP 404错误:

/ API /位置/ CON

在这种情况下,该方法不会被击中.奇怪的是,如果我将"con"以外的任何其他字符串设置为id参数,则控制器方法正在被击中并正常工作!

这是在我使用Cassini在localhost上调试我的应用程序时发生的事情(与IIS Express相同).我的项目目录中没有名为"con"的文件.处理应用程序错误事件后,IntelliTrace显示一条HttpException并显示消息:"无法映射路径'/ api/location/con'"...

有线索吗?这是一个已知的错误?

提前致谢!

Bad*_*dri 17

URL中不允许使用某些关键字,CON是其中之一.看到这个.解决方法是<system.web>在Web.config中包含以下内容.

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