Tengo problemas al intentar enrutar a un controlador cuando se incluye a través de un proyecto externo. El controlador en cuestión funciona bien cuando se incluye directamente en el proyecto o desde el proyecto externo SOLO cuando el campo de versión se elimina de la ruta. El controlador se define como se muestra a continuación.
[ApiController] [ApiVersion("1.0")] [Produces("application/json")] [Route("api/v{version:apiVersion}/devices")] [Authorize(Roles = UserConst.PermissionGroup.Admin)] public class DeviceManagementController : ControllerBase{...}Cambiar la ruta a la siguiente funciona correctamente
[Route("api/devices")] Cambiar la ruta a la siguiente falla de la misma manera que incluirla a través de {version:apiVersion}
[Route("api/v1.0/devices")]¿Alguna idea sobre lo que podría estar mal? Con cualquier información de versión, el servidor parece devolver la página de índice predeterminada, que es la alternativa cuando no se puede encontrar un controlador.
Código de Startup.cs para agregar versiones de Api
services.AddApiVersioning(config => { config.DefaultApiVersion = new ApiVersion(1, 0); config.AssumeDefaultVersionWhenUnspecified = true; config.ReportApiVersions = true; });He hecho algunas pruebas.
Al principio agregué [Route("api/devices")] a los atributos de su controlador
[ApiController] [ApiVersion("1.0")] [Produces("application/json")] [Route("api/v{version:apiVersion}/devices")] [Route("api/devices")] public class DeviceManagementController : ControllerBasey encontré que url .../api/v1.0/devices funciona correctamente.
Después de esto, intenté usar solo .../api/url de dispositivos.
Funcionaba correctamente con el atributo [ApiVersion("1.0")]
Emitió un error de versión incorrecta cuando cambié el atributo a [ApiVersion("2.0")]
así que todo estaba funcionando como se esperaba.
Resumen:
Te recomiendo que agregues [Route("api/devices")] y trates de usar.../api/devices url como una solución por ahora, hasta que encuentres algo mejor.