2018/12/18

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

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

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

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





作法是 override 掉 DefaultDirectRouteProvider,將 GetCustomAttribute 調整為 inherit: true,讓 HttpActionDescriptor 會去找繼承的別裡面的 attribute 
 
public class CustomDirectRouteProvider : DefaultDirectRouteProvider
{
    protected override IReadOnlyList GetActionRouteFactories(HttpActionDescriptor actionDescriptor)
    {
        return actionDescriptor.GetCustomAttributes
        (inherit: true);
    }
}

於 WebApiConfig 中調整為如下:
 
public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());

    // 其他略..
}

沒有留言:

張貼留言