1

我在玩 ASP MVC 和 WebAPI,在 Global.asax 中我按以下顺序调用了几段代码:

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);

这些方法的作用是不言自明的。但是当我按照这个顺序注册时,我无法访问 Web API。但是,当我将其更改为:

WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);

然后 Web API 开始工作。所以我认为注册顺序很重要。但为什么?

4

2 回答 2

3

当你打电话RegisterRoutes(RouteTable.Routes);之前

WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);

MVC 的默认路由优先,没有任何东西可以进入 WebApi 路由。

于 2013-09-01T21:31:19.843 回答
0

我对我的 Global.asax 进行了一些重构,将 MVC 配置和 WebApi 配置组合在一起,碰巧选择了第二个 WebAPI 配置。

突然间,我的所有 API 路由都开始出现这种错误:

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /api/values

此问题是由原始海报概述的场景引起的。

始终首先注册您的 API 路由。

于 2013-09-11T16:51:32.407 回答