Мне не удается заставить работать версии URI WebApi с использованием пакета nuget Microsoft.AspNet.WebApi.Versioning.ApiExplorer.
Я считаю, что следовал и дважды проверил процесс, как определено в документации, ноуправление версиями игнорируется.Я явно упускаю что-то простое.
В Visual Studio я установил пакет nuget (например, https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Versioning.ApiExplorer)
Я выполнил быстрый запуск дляASP.NET Web Api здесь: https://github.com/Microsoft/aspnet-api-versioning/wiki/New-Services-Quick-Start
Поскольку я хочу использовать управление версиями в URL-пути, я следовал инструкциям: https://github.com/Microsoft/aspnet-api-versioning/wiki/Versioning-via-the-URL-Path
Это далоКонфигурация WebApiConfig.cs, как показано ниже:
public static class WebApiConfig
{
public static void Configuration(HttpConfiguration configuration)
{
configuration.AddApiVersioning();
var constraintResolver = new DefaultInlineConstraintResolver()
{
ConstraintMap =
{
["apiVersion"] = typeof( ApiVersionRouteConstraint )
}
};
configuration.MapHttpAttributeRoutes(constraintResolver);
configuration.AddApiVersioning();
}
//...
Насколько я понимаю, теперь я должен иметь возможность декорировать контроллер, как показано ниже, для получения URL-адреса управления версиями, который выглядит следующим образом: http://localhost:8912/api/v1.1/auth/getall
[ApiVersion("1.0")]
[ApiVersion("0.9", Deprecated = true)]
[RoutePrefix("api/auth")]
public class AuthController : ApiController
{
// GET api/values
[SwaggerOperation("GetAll")]
[HttpGet, MapToApiVersion("1.0")]
[Route("GetAll")]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
Однако я получаю сообщение об ошибке "ресурс не найден".
Когда я получаю доступ к http://localhost:8912/api/auth/getall, все работает как ожидалось.
Я задавался вопросом, было ли это что-тоделать со мной, указав:
[RoutePrefix("api/auth")]
Но без этого я не могу заставить работать какие-либо маршруты.