WebAPI - 404 Not Found(MapHttpRoute)

时间:2018-04-05 13:15:54

标签: c# asp.net-web-api delegatinghandler

我正在尝试使用ASP.NET WebAPI调用以“webapi / v1”开头的ASP.NET Core API:我使用自定义DelegatingHandler来处理“webapi / v1 ...”请求并调用API,但只有这些URL工作:

/的WebAPI / V1 /电流 - >行

/的WebAPI / V1 /用户/植物/ {plantId}每页= 10&安培;的PageIndex = 1 - >行

/的WebAPI / V1 /植物/ {plantId} /用户/ {用户id} /应用/ {APPID} / {作用} - > 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未找到)

1 个答案:

答案 0 :(得分:0)

我终于找到了:)在WebApiConfig.cs中,我不得不像这样使用“*”:

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "webapi/v1/{controller}/{*url}",
            defaults: new { url = RouteParameter.Optional },
            constraints: null,
            handler: handler
        );