[英]Model Validation is working even without ModelState.IsValid netcore3
[英]Versioning for WebApi on NetCore3
我正在 NetCore3 中邁出第一步。 我已經在 VS.NET 2019 中啟動了一個默認的 webapi 項目,它創建了一個名為 WeatherForecastController 的 controller。 我已經測試了 webapi,它返回了一個帶有虛擬信息的 JSON,到目前為止一切都很好。
現在,我正在嘗試以這種方式使用屬性 Route 來使用版本控制:
[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
public class WeatherForecastController : ControllerBase
但我遇到了這個錯誤:
InvalidOperationException:約束引用“apiVersion”無法解析為類型。 使用“Microsoft.AspNetCore.Routing.RouteOptions.ConstraintMap”注冊約束類型
根據以下URL:
我已經安裝了 Microsoft.AspNet.WebApi.Versioning 庫的測試版,但我一直收到同樣的錯誤。 也許我遺漏了一些東西,或者我犯了一個愚蠢的錯誤,但我無法識別或解決它。
Microsoft.AspNet.WebApi.Versioning
依賴於 .NETFramework 4.5,而不是 .Net Core。 您需要在 Package 管理器控制台中安裝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
然后添加services.AddApiVersioning();
在 Startup.cs 的 ConfigureServices 中
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddApiVersioning();
}
參考: https://github.com/microsoft/aspnet-api-versioning/issues/499#issuecomment-521469545
您是否在啟動時配置了版本控制?
我正在使用這個 package: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;
});
...和 controller:
[ApiVersion("1.0")]
[Route("api/v{ver:apiVersion}/[controller]")]
public class MyController : ControllerBase
{
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.