我目前正在经历从 2.2 升级到 3.1 的过程。
这样做时,.NET 的默认 api-versioner 与我们的一起运行,尽管添加了代码来删除它:
是否有一种新方法来注册自定义版本器,或者是否有一种新方法可以在调用“AddApiVersioning”后删除 .NET 的默认版本。
services.AddControllers(opts =>
{
opts.Filters.Add<DatedApiVersionFilter>();
});
// add standard asp.net core versioning mechanism
services.AddApiVersioning(o =>
{
o.ApiVersionReader = new HeaderApiVersionReader(PlatformVersioningOptions.VersionHeaderName);
o.DefaultApiVersion = new ApiVersionDate(2020, 1, 31);
o.AssumeDefaultVersionWhenUnspecified = true;
});
// removing the default api version policy
services.Remove(services.Single(s => s.ImplementationType == typeof(DefaultApiVersionRoutePolicy)));
services.TryAddEnumerable(ServiceDescriptor.Singleton<MatcherPolicy, DatedApiVersionMatcherPolicy>());
services.AddSingleton<IDatedApiVersionResolver, DatedApiVersionResolver>();