Nombres de controlador ambiguos con atributos de enrutamiento: controladores con el mismo nombre y un espacio de nombres diferente para el control de versiones
Estoy tratando de agregar versiones de API y mi plan es crear un controlador para cada versión en un espacio de nombres diferente. La estructura de mi proyecto se ve así (nota: no hay un área separada para cada versión)
Controllers
|
|---Version0
| |
| |----- ProjectController.cs
| |----- HomeController.cs
|
|---Version1
|
|----- ProjectController.cs
|----- HomeController.cs
Estoy usando RoutingAttribute para las rutas. Entonces, ProjectController en la Versión 0 tiene una función con ruta como
namespace MyProject.Controllers.Version0
{
class ProjectController : BaseController
{
...
[Route(api/users/project/getProjects/{projectId})]
public async GetProjects(string projectId)
{
...
}
}
}
y ProjectController en la Versión 1 tiene función con ruta como
namespace MyProject.Controllers.Version1
{
class ProjectController : BaseController
{
...
[Route(api/v1/users/project/getProjects/{projectId})]
public async GetProjects(string projectId)
{
...
}
}
}
Pero obtengo 404-NotFound cuando intento acceder al servicio.
Si cambio el nombre de los controladores para que tengan un nombre único (Project1Controller y Project2Controller), el enrutamiento funciona. Pero, estoy tratando de evitar cambiar el nombre por simplicidad.
Seguí este enlace para resolver el problema, pero no ayudó. Creé áreas pero aún no tuve éxito. Agregar lógica de enrutamiento en el archivo global.aspx no ayuda. El espacio de nombres tampoco funciona.http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx/
El enlace anterior sugiere crear áreas, pero el enrutamiento de atributos no admite áreas según el enlace:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
¿Hay otra solución? ¿Un error con RoutingAttributes?
¡Gracias!