RSx*_*Sxx 7 c# serilog asp.net-core
我有一个面向 .Net Framework 4.6.1 的 Asp Net Core API。在这个项目中,我将 Serilog 与 Microsoft.Extensions.Logging 以及 Auofac 用于 DI。在控制器构造函数中使用带有 DI 的 ILogger< T> 记录器完美地工作,我也得到了日志。
当在 API 中我需要使用另一个项目 use Microsoft.Extensions.Logging 和 Autofac 并期望在某些构造函数中接收 ILogger< T> 时,乐趣就开始了。我在两个项目中都安装了相同版本的 Microsoft.Extensions.Logging。
我得到了以下例外情况:
Autofac.Core.DependencyResolutionException: '激活 Microsoft.Extensions.Logging.Logger
1[[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, PublicKey9Token=adb97ae] ][] -> Microsoft.Extensions.Logging.Console.ConsoleLoggerOptionsSetup -> Microsoft.Extensions.Logging.Configuration.LoggerProviderConfiguration`1[[Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider, Microsoft.Extensions.Logging.Console, Version=2.2 .0.0,文化=中性,PublicKeyToken=adb9793829ddae60]]。'内部异常 1:DependencyResolutionException:在类型 'LoggerProviderConfiguration`1' 上调用构造函数 'Void .ctor(Microsoft.Extensions.Logging.Configuration.ILoggerProviderConfigurationFactory)' 时抛出异常。
内部异常 2:MethodAccessException:尝试通过方法“Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory.GetConfiguration(System.Type)”访问方法“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" />
Run Code Online (Sandbox Code Playgroud)
这些是来自另一个项目的包:
<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" />
Run Code Online (Sandbox Code Playgroud)
Nic*_*rdt 11
看起来您可能在幕后使用了不匹配的Microsoft.Extensions.Logging.Configuration;尝试添加:
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="3.0.1" />
Run Code Online (Sandbox Code Playgroud)
对这两个项目。
| 归档时间: |
|
| 查看次数: |
4129 次 |
| 最近记录: |