【问题标题】:Web API routing 404 not found未找到 Web API 路由 404
【发布时间】:2014-08-27 20:10:06
【问题描述】:

我在尝试访问我的 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 not found 错误
http://localhost/api/OnSourceAPI/ValidateServiceRequestAuto

,但如果我将 localhost 从前面拿掉并直接使用,实际上会给我正常的路由信息​​

api/OnSourceAPI/ValidateServiceRequestAuto as the URL...

任何指针将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

    我的 webapi 项目在我的普通网站项目中运行,路径为 .../api,所以因为我将 api 路由设置为 api/controller/action,所以我真正需要使用的路径是 localhost /api/api/控制器/动作。所以事实证明 404 在那里,因为它真的在那个位置找不到任何东西。我讨厌计算机完全按照您的指示去做。

    【讨论】:

    • 我没有遇到完全相同的问题,但这帮助我解决了问题。我正在从 WebClient 类调用该服务,而我的 BaseAddress 最后缺少一个“/”。所以我认为它可能是在调用 localhost/apiapi/controller/action。
    • 我刚刚遇到了同样的问题,也觉得有点傻!感谢您分享您的问题,否则我不知道我会追多久
    • 您确定需要 URL 的“操作”部分吗? Web API 意味着您将 HTTP 动词映射到控制器(ApiController)中的同名操作。
    • 只要确保你的项目中有好的 global.asax 有以下代码,web api(没有 MVC 区域) public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { //AreaRegistration .RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); } }
    【解决方案2】:

    在我的例子中,它是创建服务的地址:WebApp.Start(address)

    应该是:http://localhost:9000/

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

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2013-06-02
      • 1970-01-01
      • 2022-01-14
      • 2014-07-03
      • 2017-08-16
      • 2014-12-31
      • 1970-01-01
      • 2019-05-30
      相关资源
      最近更新 更多