2018/12/18

[筆記] ASP.NET WebApi2 繼承之後的 AttributeRouting 無法作用

在要提供 /api/MyApi 以及 /api/v2/MyApi 只有特定某個 action 需要 override 

或是產品提供基礎功能的 abstract class 提供給專案客製空間時可以使用到

太久之前處理過,這幾天開新案又碰到一次, MEMO 一下作法





作法是 override 掉 DefaultDirectRouteProvider,將 GetCustomAttribute 調整為 inherit: true,讓 HttpActionDescriptor 會去找繼承的別裡面的 attribute 
  1. public class CustomDirectRouteProvider : DefaultDirectRouteProvider
  2. {
  3. protected override IReadOnlyList GetActionRouteFactories(HttpActionDescriptor actionDescriptor)
  4. {
  5. return actionDescriptor.GetCustomAttributes
  6. (inherit: true);
  7. }
  8. }
於 WebApiConfig 中調整為如下:
  1. public static void Register(HttpConfiguration config)
  2. {
  3. config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
  4. // 其他略..
  5. }

沒有留言:

張貼留言