Как реализовать управление версиями URI Microsoft AspNet WebApi - PullRequest
0 голосов
/ 30 декабря 2018

Мне не удается заставить работать версии URI WebApi с использованием пакета nuget Microsoft.AspNet.WebApi.Versioning.ApiExplorer.

Я считаю, что следовал и дважды проверил процесс, как определено в документации, ноуправление версиями игнорируется.Я явно упускаю что-то простое.

  1. В Visual Studio я установил пакет nuget (например, https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Versioning.ApiExplorer)

  2. Я выполнил быстрый запуск дляASP.NET Web Api здесь: https://github.com/Microsoft/aspnet-api-versioning/wiki/New-Services-Quick-Start

  3. Поскольку я хочу использовать управление версиями в 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")]

Но без этого я не могу заставить работать какие-либо маршруты.

...