我正在尝试使用 ASP.NET WebAPI 调用以“webapi/v1”开头的 ASP.NET Core API:我正在使用自定义 DelegatingHandler 来处理“webapi/v1 ...”请求并调用 API 但只有这些 URL 有效:
/webapi/v1/current -> 好的
/webapi/v1/users/plant/{plantId}?PageSize=10&PageIndex=1 -> OK
/webapi/v1/plants/{plantId}/user/{userId}/app/{appId}/{role} -> KO
我的 WebapiConfig.cs 目前包含以下代码:
public static void Register(HttpConfiguration config)
{
ApiDelegatingHandler handler = new ApiDelegatingHandler()
{
InnerHandler = new HttpClientHandler()
};
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "webapi/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional },
constraints: null,
handler: handler
);
}
我是否被迫添加一个新的“config.Routes.MapHttpRoute”来处理“复杂”的路线?是否可以映射以 "webapi/v1" 开头的路线?
我试图做的是通过添加config.MessageHandlers.Add(handler);全局注册自定义 DelegatingHandler 然后在其中编写一些代码以忽略不以我的模式开头但不成功的请求(404.0 Not Found)