System.ArgumentNullException: 值不能为 null。(参数'type') OData单元测试升级到.NET 6.0

8

我最近升级到了.NET 6.0版本,但在我的OData单元测试项目中遇到了以前从未遇到的错误。当运行以下单元测试时,我遇到了一个[System.ArgumentNullException: Value cannot be null. (Parameter 'type')]的错误:

        [Fact]
        public void Startup_Configure_Ok()
        {
            // Arrange   
            ServiceCollection serviceCollection = new ServiceCollection();
            serviceCollection.AddOData();
            ServiceProvider provider = serviceCollection.BuildServiceProvider();
            var appBuilder = new ApplicationBuilder(provider);       
            var routeBuilder = new RouteBuilder(appBuilder);
            routeBuilder.EnableDependencyInjection();

            Startup startup = new Startup(_fixture.GetConfiguration());

            // Act
            startup.Configure(appBuilder);

            // Assert
            Assert.True(true);
        }

有什么建议吗?

堆栈跟踪:

  Message: 
System.ArgumentNullException : Value cannot be null. (Parameter 'type')

  Stack Trace: 
IntrospectionExtensions.GetTypeInfo(Type type)
DefaultContainerBuilder.BuildContainer()
PerRouteContainerBase.CreateODataRootContainer(Action`1 configureAction)
PerRouteContainerBase.CreateODataRootContainer(String routeName, Action`1 configureAction)
ODataRouteBuilderExtensions.EnableDependencyInjection(IRouteBuilder builder, Action`1 configureAction)
ODataRouteBuilderExtensions.EnableDependencyInjection(IRouteBuilder builder)
StartupUnitTest.Startup_Configure_Ok() line 43

似乎是您的 DI 框架出了问题。您确定它与 .net 6 兼容吗? - Nigel
我相信是这样的,有没有办法可以检查它是否兼容? - Ysefwakil
嗨@Ysefwakil,请问你找到这个问题的根本原因了吗?我在升级一些依赖项后也遇到了这个错误。 - Daniel Glos
1个回答

10

我看到了完全相同的症状,并通过升级Microsoft.AspNetCore.OData版本到7.5.17进行了修复。


1
我在升级到.NET 6时遇到了相同的问题,这个解决方法很有效,应该标记为正确答案。 - Tao Gómez Gil
我在Net Framework中使用MapODataServiceRoute时遇到了类似的问题,将Microsoft.AspNet.OData升级到最新版本(7.6.1)后问题得到解决。 - pooya13
我在使用Microsoft.AspnetCore.OData.7.5.2时,将其升级到Microsoft.AspnetCore.OData.7.5.12,同时将我的项目升级到.net core 6.0。 https://github.com/OData/AspNetCoreOData/issues/217 - Rahul Ranjan
在使用Microsoft.AspNetCore.OData 8.2.0进行odata Action调用时,遇到了与byte[]参数相关的类似问题。因此回滚到了8.1.2版本。 - Alex Buchatski
确认。我之前使用的是7.5.7版本,升级到7.5.17版本解决了问题(.NET 7)。 - Davide Briscese

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接