问题描述
我目前正在经历从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>();
解决方法
我设法通过删除对“ services.AddApiVersioning()”的调用来解决了这个问题。
在.NET Core 3.1中,添加具有新的'AddControllers'扩展名的过滤器似乎足以对所有使用该过滤器装饰的端点启动我们的版本控制策略。
最终实现:
promise.then(callback)