Jai*_*rgo 3 c# asp.net-core-3.0 .net-core-3.0
我正在 NetCore3 中迈出第一步。我在 VS.NET 2019 中启动了一个默认的 webapi 项目,这创建了一个名为 WeatherForecastController 的控制器。我已经测试了 webapi,它返回一个带有虚拟信息的 JSON,到目前为止一切顺利。
现在,我试图通过以这种方式使用属性 Route 来使用版本控制:
[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
public class WeatherForecastController : ControllerBase
Run Code Online (Sandbox Code Playgroud)
但是我遇到了这个错误:
InvalidOperationException: 无法将约束引用“apiVersion”解析为类型。使用“Microsoft.AspNetCore.Routing.RouteOptions.ConstraintMap”注册约束类型
根据以下网址:
我已经安装了 Microsoft.AspNet.WebApi.Versioning 库的测试版,但我一直收到同样的错误。也许我遗漏了一些东西,或者我有一个愚蠢的错误,但我无法识别或解决它。
Xue*_*hen 11
Microsoft.AspNet.WebApi.Versioning
依赖于 .NETFramework 4.5,而不是 .Net Core 。您需要Microsoft.AspNetCore.Mvc.Versioning -Version 4.0.0-preview8.19405.7
在包管理器控制台中安装它提供对 ASP.NET Core 3.0 的支持,如下所示:
Install-Package Microsoft.AspNetCore.Mvc.Versioning -Version 4.0.0-preview8.19405.7
Run Code Online (Sandbox Code Playgroud)
然后services.AddApiVersioning();
在Startup.cs中添加ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddApiVersioning();
}
Run Code Online (Sandbox Code Playgroud)
参考:https : //github.com/microsoft/aspnet-api-versioning/issues/499#issuecomment-521469545
小智 6
您是否在启动时配置了版本控制?
我正在使用这个包:Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer
这是我的 API 的代码
services.AddApiVersioning(options =>
{
options.ReportApiVersions = true;
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
});
services.AddVersionedApiExplorer(options =>
{
options.GroupNameFormat = "'v'V";
options.SubstituteApiVersionInUrl = true;
});
Run Code Online (Sandbox Code Playgroud)
...和控制器:
[ApiVersion("1.0")]
[Route("api/v{ver:apiVersion}/[controller]")]
public class MyController : ControllerBase
{
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6183 次 |
最近记录: |