项目升级到.Net8.0 Autofac引发诡异的问题
前两天把项目框架升级到.Net8.0了,其他一些第三方库升级了一部分,升级完以后项目跑不起来了,报如下错误:
An unhandled exception occurred while processing the request. DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Microsoft.AspNetCore.Mvc.ApiExplorer.EndpointMetadataApiDescriptionProvider' can be invoked with the available services and parameters: Cannot resolve parameter 'Microsoft.Extensions.DependencyInjection.IServiceProviderIsService serviceProviderIsService' of constructor 'Void .ctor(Microsoft.AspNetCore.Routing.EndpointDataSource, Microsoft.Extensions.Hosting.IHostEnvironment, Microsoft.AspNetCore.Routing.ParameterPolicyFactory, Microsoft.Extensions.DependencyInjection.IServiceProviderIsService)'. Autofac.Core.Activators.Reflection.ReflectionActivator.GetAllBindings(ConstructorBinder[] availableConstructors, IComponentContext context, IEnumerable<Parameter> parameters) DependencyResolutionException: An exception was thrown while activating Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator -> Microsoft.AspNetCore.Mvc.ApiExplorer.ApiDescriptionGroupCollectionProvider -> λ:Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionProvider[] -> Microsoft.AspNetCore.Mvc.ApiExplorer.EndpointMetadataApiDescriptionProvider.
看着是依赖注入的问题,后面去网上找了一下,找到博客园的一篇文章,提到是vs版本的问题,我现在用的vs版本是17.11.5,看完以后心里想vs应该不会和影响到代码,我想着通过命令行 dotnet xxx.dll 能不能启动,奇怪了命令行可以启动;接着我又用vscode试了一下,也可以启动,这就很奇怪了。
我把项目.Net6.0的代码签出项目可以跑起来,看来还是升级的问题,和依赖注入有关,后面想到了可能是autofac没有升级,把autofac升级到10.0就没问题了。
问题虽然解决了,但还是很纳闷,怎么不升级autofac,vs会导致项目跑不起来了,但是通过命令行和vscode又可以。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性