Senparc / Senparc.CO2NET

支持 .NET Framework & .NET Core 的公共基础扩展库
Apache License 2.0
358 stars 128 forks source link

项目启动抛异常:The type initializer for 'Nested' threw an exception #288

Open luoxgwb opened 3 months ago

luoxgwb commented 3 months ago

已经注册 services.AddMemoryCache();

启动还是报错:Senparc.CO2NET.Exceptions.CacheException: IMemoryCache 依赖注入未设置!如果您使用的是本地缓存,请确保在 Startup.cs 中执行了 services.AddMemoryCache() 方法!

System.TypeInitializationException: The type initializer for 'Nested' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Nested' threw an exception. ---> Senparc.CO2NET.Exceptions.CacheException: IMemoryCache 依赖注入未设置!如果您使用的是本地缓存,请确保在 Startup.cs 中执行了 services.AddMemoryCache() 方法! at Senparc.CO2NET.Cache.LocalObjectCacheHelper.get_LocalObjectCache() at Senparc.CO2NET.Cache.LocalObjectCacheStrategy..ctor() at Senparc.CO2NET.Cache.LocalObjectCacheStrategy.Nested..cctor()

luoxgwb commented 3 months ago

经过长时间排查,日志组件从NLog切换到Serilog,在CreateHostBuilder方法中只要添加了UseSerilog,你们这个[Senparc.CO2NET]就会抛异常,我服了呀

luoxgwb commented 3 months ago

只要没有添加UseSerilog方法,就算没有注册IMemoryCache(),也不会抛异常,注册了UseSerilog,不管怎么都会抛异常,我一直使用Redis缓存

JeffreySu commented 2 months ago

@luoxgwb 可以发一下所有启动过程的代码,帮您排查一下,框架本身并没有对 Log 库做其他特殊处理。