c# asp.net-web-api2 asp.net-web-api-routing

c# - Diferente RoutePrefix, mismo nombre de controlador



asp.net-web-api2 asp.net-web-api-routing (1)

Desafortunadamente, la API web encuentra los controladores por nombre de clase, ignorando el espacio de nombres. Este es un problema conocido y no es exclusivo del enrutamiento basado en atributos.

La solución más fácil, con mucho, es evitar el problema y utilizar nombres de controladores únicos. Pero si no te importa tener un poco de fantasía, aquí hay una solución:

https://blogs.msdn.microsoft.com/webdev/2013/03/07/asp-net-web-api-using-namespaces-to-version-web-apis/

Tengo un problema al dividir mi aplicación web-api en diferentes áreas (no en áreas de mvc), usando espacios de nombres y RoutePrefix

La aplicación se hospeda usando Owin Self Host, y en mi clase de inicio tengo lo siguiente.

HttpConfiguration config = new HttpConfiguration(); config.MapHttpAttributeRoutes(); app.UseWebApi(config);

Y mis dos controladores que probé con

[RoutePrefix("api/test")] public class TestController : ApiController { [Route("")] public IHttpActionResult Get() { return Ok("api"); } }

[RoutePrefix("sync/test")] public class TestController : ApiController { [Route("")] public IHttpActionResult Get() { return Ok("sync"); } }

Estos dos controladores viven en dos espacios de nombres diferentes, Api y Sync.

Cuando intento acceder a los dos controladores con http://localhost/api/test y http://localhost/api/sync obtengo un 404.

Pero si cambio el nombre de uno de los controladores a, por ejemplo, TestApiController, ambos funcionan.

¿Alguien tiene una buena idea si es posible hacer lo que quiero?