如何实施Microsoft AspNet WebApi URI版本控制

时间:2018-12-30 07:33:08

标签: asp.net-web-api2 versioning

我似乎无法使用nuget包Microsoft.AspNet.WebApi.Versioning.ApiExplorer来使WebApi URI版本正常工作。

我相信我已经按照文档中的说明进行了仔细检查,但是对版本进行了忽略。我显然缺少基本的东西。

  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();
        }
    //...

据我了解,我现在应该能够如下所示装饰控制器,以实现如下所示的版本控制网址: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")]

但是,如果没有这一点,我似乎无法获得任何工作途径。

0 个答案:

没有答案