web api 2 路由 - 找不到资源

Posted

技术标签:

【中文标题】web api 2 路由 - 找不到资源【英文标题】:web api 2 routing - The resource cannot be found 【发布时间】:2014-03-22 22:55:45 【问题描述】:

我已将 Web Api 控制器添加到 MVC 5 应用程序,但一直收到错误 404 - 找不到资源。我已将 GlobalConfiguration.Configure(WebApiConfig.Register) 添加到 Application_Start()

    protected void Application_Start()
    
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        GlobalConfiguration.Configure(WebApiConfig.Register);
    

我已经注册了路线

public static class WebApiConfig

    public static void Register(HttpConfiguration config)
    
        config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/controller/id",
            defaults: new  id = RouteParameter.Optional 
        );
    
 

【问题讨论】:

【参考方案1】:

在我将注册 api 方法的位置更改为注册路由的上方后,WebApi 路由开始工作:

    protected void Application_Start()
    
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    

【讨论】:

我可以确认这对我来说也是一个问题。 WebApiConfig.Register 需要走在 RouteConfig.RegisterRoutes 之前 有人知道为什么吗?因为如果您创建一个全新的项目,它仍然会出现问题 你是救世主! @ZoranP。你能解释一下原因吗,它对我有用,但我想知道原因。 对我来说 GlobalConfiguration.Configure(WebApiConfig.Register);丢失了,我添加了 WebAPI cotroller vs 创建了 webAPIconfig.cs 文件,但没有添加到 Global.asax

以上是关于web api 2 路由 - 找不到资源的主要内容,如果未能解决你的问题,请参考以下文章

在 Next.js 应用程序中找不到 API 路由(找不到该页面)

找不到 GET 的路由 / - 无法提供默认 index.html

laravel 设置好了路由为啥找不到控制器

link_to嵌套资源路由找不到ID

在 Rest API 中找不到处理资源

找不到路径“/api/login_check”的控制器。路由配置错误