.NET Core 2.2版本API版本问题:不支持的API版本。

3

我正在创建一个API并需要对其进行版本控制。我正在使用Microsoft.AspNetCore.Mvc.Versioning 3.1.3包。

我的StartUp.cs如下所示

在ConfigureServices中:

services.AddApiVersioning(o => {
            o.ReportApiVersions = true;
            o.AssumeDefaultVersionWhenUnspecified = true;
            o.DefaultApiVersion = new ApiVersion(1, 0);
        });

        services.AddMvc(options => options.EnableEndpointRouting = false).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

我想要对以下两个控制器进行版本控制:

我的2个控制器如下:

namespace JWTWithRefresh.Areas.V1.CMS
{
    [AllowAnonymous]
    [ApiVersion("1.0")]
    [Route("api/[controller]/[action]")]
    public class AppController : Controller
    {
        public IActionResult GetApp()
        {
            return Ok("This is from API V1");
        }
    }
}

另一个控制器如下所示

namespace JWTWithRefresh.Areas.V2.CMS
{
    [AllowAnonymous]
    [ApiVersion("2.0")]
    [Route("api/[controller]/[action]")]
    public class AppController : Controller
    {
        public IActionResult GetApp()
        {
        return Ok("This is from API V2");
        }
    }
}

当我进行调用时,得到的响应如下:

终端点 = https://localhost:5001/api/App/GetApp?api-version=1.0

响应结果 =

{
    "error": {
             "code": "UnsupportedApiVersion",
             "message": "The HTTP resource that matches the request URI 'https://localhost:5001/api/App/GetApp' is not supported.",
             "innerError": null
    }
}

如果有人遇到过同样的问题,请指导我解决这个问题。谢谢。

3
请看这里,看看这是否解决了问题:https://github.com/Microsoft/aspnet-api-versioning/issues/437 - Asons
谢谢,你命中了要害。解决了我的问题。 - Manoj Sethi
标记为已回答 - wast
3个回答

2
对于其他遇到同样问题的人,我通过上面评论中LGSon的建议解决了这个问题:
解决方法1:
Add [ApiController] in Controller

方案二:
禁用API行为。
services.AddApiVersioning( options => options.UseApiBehavior = false );

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接