0

我正在尝试使用 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)

4

1 回答 1

0

我终于发现了:) 在 WebApiConfig.cs 我不得不像这样使用“*”:

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "webapi/v1/{controller}/{*url}",
            defaults: new { url = RouteParameter.Optional },
            constraints: null,
            handler: handler
        );
于 2018-04-09T07:56:51.013 回答