2014-10-30 66 views
9

有誰知道消息處理程序是否可以與Web API 2.x中的屬性路由同時使用?我有一個自定義消息處理程序使用傳統路由,然後在添加屬性路由後,它停止工作。我不確定它是否不受支持,或者我是否錯誤配置了某些內容。任何幫助是極大的讚賞。web api - 消息處理程序屬性路由

屬性路由屬性後

--- WebApiConfig.cs code snippet (simplified)---- 


     config.Routes.MapHttpRoute(
      name:"DefaultApi", 
      routeTemplate: "api/{controller}", 
      defaults: null, 
      constraints: null, 
      handler: my-message-handler-object 
     ); 


--- MyController.cs code snippet (simplified)---- 

    public class MyController : ApiController 
    { 

     [HttpGet] 
     public IHttpActionResult CheckInServices(...) 
     { 
      ... 
     } 
    } 

2)路由

--- WebApiConfig.cs code snippet (simplified)---- 

    public static void Register(HttpConfiguration config) 
    { 
     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name:"DefaultApi", 
      routeTemplate:"api/vendor", 
      defaults: new { controller = "Users" }, 
      constraints: null, 
      handler: my-message-handler-object 
     ); 
    } 


--- MyController.cs code snippet (simplified)---- 

    [RoutePrefix("api/vendor/{vendorID:long}/service")] 
    public class MyController : ApiController 
    { 
     [HttpPost] 
     [Route("{serviceID:long}")] 
     public IHttpActionResult CheckInServices(...) 
     { 
      ... 
     } 
    } 

感謝前1),

科迪

回答

0

全球消息處理程序將工作 - 只是將它安放啓動。

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MessageHandlers.Add(new YourAuthenticationHandler()); 
    } 
} 

我不確定每個路由消息處理程序是否使用屬性路由。