未找到Web API路由404

时间:2014-08-27 20:10:06

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

尝试访问我的某个Web API操作时,我收到了404 not found错误:

我的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 / help页面甚至将/ api / OnSourceAPI / ValidateServiceRequestAuto显示为我的api调用的路由。

我也尝试过使用WebAPIRouteDebugger工具。当我使用

时,它给我一个000 404找不到的错误
http://localhost/api/OnSourceAPI/ValidateServiceRequestAuto

,但实际上如果我将localhost从前面取出并只使用

,就会给我正常的路由信息
api/OnSourceAPI/ValidateServiceRequestAuto as the URL...

任何指针都会受到赞赏。

2 个答案:

答案 0 :(得分:6)

我想通了,现在觉得有点傻。

我的webapi项目在我的普通网站项目中运行,路径为... / api,所以因为我将api路由设置为api / controller / action,我真正需要使用的路径是localhost /的 API / API /控制器/动作。事实证明404就在那里,因为它真的无法在那个位置找到任何东西。当计算机完全按照你告诉他们的方式行事时,我讨厌它。

答案 1 :(得分:0)

就我而言,它是已创建服务的地址:WebApp.Start(address)

应该像:http://localhost:9000/

不:http://localhost:9000/api/