0

嗨,我需要关于web api中的路由和处理程序问题的帮助。我有两条路线,我希望一条路线使用自定义处理程序,其他路线使用默认路线。我有这个代码。在web api中使用不同处理程序的路由asp.net

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”最好的超载没有一个名为“处理”参数)。

我想第一条路线使用处理器BasicHandler()Repository(),另一个没有这个自定义处理程序。这是可能的,有两个不同的处理程序?

回答

0

我发现我的问题的解决方案,我会错过的attributte在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())) 
    ); 
相关问题