使用属性路由时按名称空间区分Web Api控制器

时间:2017-12-15 18:52:20

标签: c# asp.net-web-api

我正在使用Web Api的属性路由。我想要完成的是编写一个控制器选择器,以便使用不同的属性路径来访问共享相同名称但位于不同命名空间下的控制器类(因为Web Api默认情况下不允许这样做)。

我在网上搜索了一些示例,发现了以下内容:

https://github.com/WebApiContrib/WebAPIContrib/pull/111/files http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/NamespaceControllerSelector/NamespaceHttpControllerSelector.cs

但据我所知,它们似乎是对基于默认{controller} / {action} / {id}样式约定的路由的修改。因为他们使用routeData.Values.TryGetValue(ControllerKey, out controllerName)从控制器选择器中的请求路由数据中获取控制器名称。但由于我使用属性,我想我不能使用它。

是否有示例或指南说明如何使用属性路由完成此操作?

EDIT1: 以下是我在评论中描述的场景的简单示例:

namespace NS1
{

    public class Class1 : ApiController
    {
        [HttpGet]
        [Route("dosomething1")]
        public object DoSomething()
        {
        }
    }
}

namespace NS2
{

    public class Class1 : ApiController
    {
        [HttpGet]
        [Route("dosomething2")]
        public object DoSomething()
        {
        }
    }
}

0 个答案:

没有答案