网络中具有不同处理程序的路由 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
没有!你应该使用属性路由
我找到了我的问题的解决方案,我在 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()))
);
大家好,我需要帮助解决网络中的路由和处理程序问题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
没有!你应该使用属性路由
我找到了我的问题的解决方案,我在 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()))
);