我有一个针对.Net框架4.6.1的。在这个项目中,我将Serilog与Microsoft.Extensions.Logging结合使用,对于DI也使用Auofac。在控制器构造函数中使用带有DI的ILogger< T>记录器可以很好地工作,我还可以获得日志。
当在API中我需要使用另一个项目--使用Microsoft.Extensions.Logging和Autofac --并期望在一些构造函数中接收ILogger< T>时,乐趣就开始了。我在两个项目中都安装了相同版本的Microsoft.Extensions.Logging。
我得到了休整例外:
激活Microsoft.Extensions.Logging.Logger1[[Microsoft.AspNetCore.Hosting.Internal.WebHost, Microsoft.AspNetCore.Hosting, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]] -> Microsoft.Extensions.Logging.LoggerFactory -> λ:Microsoft.Extensions.Logging.ILoggerProvider[] -> Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider -> Microsoft.Extensions.Options.OptionsMonitor1[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions,Microsoft.Extensions.Logging.Console、Version=2.2.0.0、Culture=neutral、PublicKeyToken=adb9793829ddae60] -> Microsoft.Extensions.Options.OptionsFactory1[[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions, Microsoft.Extensions.Logging.Console, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]] -> λ:Microsoft.Extensions.Options.IConfigureOptions1[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions,Microsoft.Extensions.Logging.Console、Version=2.2.0.0、Culture=neutral、PublicKeyToken=adb9793829ddae60][] -> Microsoft.Extensions.Logging.Console.ConsoleLoggerOptionsSetup -> Microsoft.Extensions.Logging.Configuration.LoggerProviderConfiguration1[[Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider, Microsoft.Extensions.Logging.Console, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].' Inner Exception1: DependencyResolutionException: An exception was thrown while invoking the constructor 'Void .ctor(Microsoft.Extensions.Logging.Configuration.ILoggerProviderConfigurationFactory)' on type 'LoggerProviderConfiguration1'.时抛出异常
内部'Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory.GetConfiguration(System.Type)‘:MethodAccessException:方法Exception2试图访问方法'Microsoft.Extensions.Logging.ProviderAliasUtilities.GetAlias(System.Type)’失败。
这些是API的包:
<PackageReference Include="Autofac" Version="4.9.4" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="5.0.1" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Hosting.WindowsServices" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.0.1" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.1" />
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
<PackageReference Include="Serilog.Extensions.Logging.File" Version="1.1.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />这些是来自另一个项目的包:
<PackageReference Include="Autofac" Version="4.9.4" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.0.1" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.1" />发布于 2019-11-25 21:57:30
看起来您可能在幕后有一个不匹配的Microsoft.Extensions.Logging.Configuration,请尝试添加:
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="3.0.1" />对这两个项目。
发布于 2019-11-21 23:12:31
好了!不要相信这是Autofac特有的。我用的不是自助式的,而是斯里奥格。这是在我更新到3.0.1之后立即发生的。
将Microsoft.Extensions.Logging从v3.0.1回滚到3.0.0,使我再次运行。还不确定根本原因,但这会让你重新开始工作。
如果您正在使用EF Core,并且从3.0.0转到3.0.1,那么您也需要将其回滚到3.0.0。
https://stackoverflow.com/questions/58954066
复制相似问题