【问题标题】:ASP.NET MVC 4 Web API fails to map path containing the string "con"?ASP.NET MVC 4 Web API 无法映射包含字符串“con”的路径?
【发布时间】:2013-07-11 15:16:44
【问题描述】:

字符串“con”有什么问题?

好的,我的api路由配置比较没意思:

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

LocationController 有以下方法:

public List<LocationViewModel> Get(string id)
{
    return _ds.SearchLocations(id);
}

一切正常,除了当我尝试像这样获取资源时遇到 HTTP 404 错误:

/api/location/con

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

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

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

提前致谢!

【问题讨论】:

    标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing


    【解决方案1】:

    URL 中不允许使用某些关键字,CON 就是其中之一。见this。解决方法是在您的 Web.config 中的 &lt;system.web&gt; 下包含以下内容。

    <httpRuntime relaxedUrlToFileSystemMapping="true" />
    

    【讨论】:

    • 啊,显然一些不死僵尸还在困扰着我们... :) 感谢您的热烈响应!
    • 实际的 F 是什么?谢谢你在互联网上的随机陌生人!
    • 发生这种情况时,我以为我要疯了。谢谢!
    • 你好...我刚遇到这个问题,但是在使用httpRuntime配置之前,我很想知道如果在URL中允许这些关键字是否存在安全问题。
    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2012-09-28
    • 2020-11-15
    相关资源
    最近更新 更多