2014-08-27 164 views
4

我越来越想访问我的Web API动作之一时,未找到404错误:的Web API路由找不到404

我有我的WebAPIConfig:

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

我有一个控制器命名为OnSourceAPIController和GET操作ValidateServiceRequestAuto。

我得到一个404错误,当我尝试去:

http://localhost/api/OnSourceAPI/ValidateServiceRequestAuto 

我的第一个猜测是我有某种路由错误的,但我创建了一个MVC控制器和索引页,并能通过这个路由(api/controller/action)正常浏览。内置api /帮助页甚至显示/ api/OnSourceAPI/ValidateServiceRequestAuto作为我的api调用的路由。

我也试过使用WebAPIRouteDebugger工具。它给了我000 404未找到错误,当我使用

http://localhost/api/OnSourceAPI/ValidateServiceRequestAuto 

,但实际上给我正常的路由信息​​,如果我把本地主机关闭前的,只是使用

api/OnSourceAPI/ValidateServiceRequestAuto as the URL... 

任何指针会赞赏。

回答

6

我觉得现在感觉有点傻了。

我有我的webapi项目在我的普通网站项目中运行,路径为.../api,因此我将api路由设置为api/controller/action,我真的需要使用的路径是localhost/api/api /控制器/操作。所以事实证明,404在那里,因为它真的找不到那个地方的任何东西。当电脑完全按照你的意思去做时,我讨厌它。

+0

我没有完全相同的问题,但是这让我看着办吧出。我从WebClient类调用服务,并且我的BaseAddress在最后缺少'/'。所以我认为这可能是调用localhost/apiapi/controller/action。 – bcwhims 2015-01-13 16:00:10

+0

我刚刚有完全相同的问题,也感觉有点傻!谢谢你分享你的问题,我不知道我会一直追着多久,否则 – Michael12345 2015-03-12 17:54:50

+0

你确定你需要URL的'action'部分吗? Web API意味着您将HTTP动词映射到控制器(ApiController的)中具有相同名称的动作。 – 2016-03-24 23:02:54