如何在 UseMvc 中间件之外的 .NetCore 3.1 中注册 OData 扩展方法

How to register OData extension methods in .NetCore 3.1 outside of UseMvc middleware

将我的 API 从 .net core 2.2 迁移到 3.1 后,我面临一些问题来决定我应该遵循哪种最佳方法来为我的 API 注册 OData 扩展方法。目前,我有这个代码

public void ConfigureServices(IServiceCollection services)
 {
          ....
             #region OData

            services.AddOData();

            #endregion  
          ....
 }

关于配置方法

public void Configure(IApplicationBuilder app, IHostEnvironment env)
 {
  ...
  app.UseAuthentication();
  app.UseMvc(routeBuilder =>
                        {
                            routeBuilder.Select().OrderBy().Filter().MaxTop(1000).Count();
                            routeBuilder.EnableDependencyInjection();
                        });
   ...
 }

如何使用以下方法注册 Select() OrderBy() Filter() ....?在不注册 UseMvc 的情况下,这是正确的做法吗?

 public void Configure(IApplicationBuilder app, IHostEnvironment env)
 {
        ...
        app.UseRouting();
        app.UseAuthentication();
        app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
            ...
 }

查看这篇文章:Experimenting with OData in ASP.NET Core 3.1

显然.NET Core 3.0 和 3.1 还不支持 OData。但是,您可以使用 beta 版本,其步骤在文章中有说明。

更新:

从 7.3.0 版开始,它们确实支持 OData。但是,它们还不能用于端点路由。你可以关注this Github thread for updates, in particular, this answer