Неоднозначные имена контроллеров с атрибутами Routing: контроллеры с одинаковыми именами и другим пространством имен для управления версиями
Я пытаюсь добавить управление версиями API, и я планирую создать контроллер для каждой версии в различном пространстве имен. Моя структура проекта выглядит следующим образом (примечание: нет отдельной области для каждой версии)
Controllers
|
|---Version0
| |
| |----- ProjectController.cs
| |----- HomeController.cs
|
|---Version1
|
|----- ProjectController.cs
|----- HomeController.cs
Я использую RoutingAttribute для маршрутов. Итак, ProjectController в Version0 имеет функцию с маршрутом как
namespace MyProject.Controllers.Version0
{
class ProjectController : BaseController
{
...
[Route(api/users/project/getProjects/{projectId})]
public async GetProjects(string projectId)
{
...
}
}
}
и ProjectController в версии 1 имеет функцию с маршрутом как
namespace MyProject.Controllers.Version1
{
class ProjectController : BaseController
{
...
[Route(api/v1/users/project/getProjects/{projectId})]
public async GetProjects(string projectId)
{
...
}
}
}
Но я получаю 404-NotFound, когда я пытаюсь попасть в сервис.
Если я переименую контроллеры в уникальные имена (Project1Controller и Project2Controller), маршрутизация работает. Но я пытаюсь избежать переименования для простоты.
Я пошел по этой ссылке, чтобы решить проблему, но это не помогло. Я действительно создал области, но все еще безуспешно. Добавление логики маршрутизации в файл global.aspx не помогает. Пространство имен тоже не работает.http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx/
Приведенная выше ссылка предлагает создать области, но атрибут маршрутизации не поддерживает области согласно ссылке:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
Есть ли другое решение? Ошибка с RoutingAttributes?
Спасибо!