How do you inherit route prefixes at the controller class level in WebApi?

后端 未结 5 1419
粉色の甜心
粉色の甜心 2021-01-11 10:49

Note, I\'ve read about the new routing features as part of WebApi 2.2 to allow for inheritance of routes. This does not seem to solve my particular issue, however. It seems

5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-11 11:51

    I had a similar requirement. What i did was:

    public class CustomDirectRouteProvider : DefaultDirectRouteProvider
    {
        protected override string GetRoutePrefix(HttpControllerDescriptor controllerDescriptor)
        {
            var routePrefix =  base.GetRoutePrefix(controllerDescriptor);
            var controllerBaseType = controllerDescriptor.ControllerType.BaseType;
    
            if (controllerBaseType == typeof(BaseController))
            {
                //TODO: Check for extra slashes
                routePrefix = "api/{tenantid}/" + routePrefix;
            }
    
            return routePrefix;
        }
    }
    

    Where BaseController is the one defining what is the prefix. Now normal prefixes work and you can add your own. When configuring routes, call

    config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
    

提交回复
热议问题