从.NET Core 2.2升级到3.1时,无法禁用默认的API版本控制程序

问题描述

我目前正在经历从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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...