网络中具有不同处理程序的路由 api asp.net

Routes with different handler in web api asp.net

大家好,我需要帮助解决网络中的路由和处理程序问题api。我有两条路线,我希望一条路线使用自定义处理程序,其他路线使用默认值。我有这个代码。

config.Routes.MapHttpRoute(

            name: "NamedActions",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional },
            handler: customConfig.MessageHandlers.Add(new BasicHandler(new Repository()))
        );

config.Routes.MapHttpRoute(
            name: "ApiLogin",
            routeTemplate: "apiLogin/v1/LoginApi",
            defaults: new { controller = "LoginApi"}//,
        );

但是当我输入 handler: customConfig.MessageHandlers.Add(new BasicHandler(new Repository())) 时抛出一个错误(错误 43 'MapHttpRoute' 的最佳重载没有名为 'handler'[=23 的参数=]).

我希望第一条路线使用处理程序 BasicHandler()Repository(),另一条路线不使用此自定义处理程序。这可能吗,有两条路线有不同的处理程序?

Is this possible, have two routes with different handler

没有!你应该使用属性路由

http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#add-routes

我找到了我的问题的解决方案,我在 config.Routes.MapHttpRoute 中遗漏了一个属性,如果我想放置属性处理程序,我必须先放置属性约束,然后再放置处理程序属性。例如:

config.Routes.MapHttpRoute(

        name: "NamedActions",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional },
        constraint: null,
        handler: customConfig.MessageHandlers.Add(new BasicHandler(new Repository()))
    );