在我们的项目中实现 Serilog。我们已经实现了 AspNetCoreRateLimit 来阻止对 API 的调用。该项目是一个 .Net Core 项目,但由于某些依赖关系而针对 Net461 进行构建。
在 Serilog 之前,API 很好。
现在安装了 serilog,我们收到一个错误。
在引入 serilog 之前调用此方法会导致错误出现。
services.Configure<IpRateLimitOptions>(_configuration.GetSection("IpRateLimiting"));
Startup() 具有:
Log.Logger = new LoggerConfiguration()
.WriteTo.File("Logs/FSCPAPI-{Date}.log")
.CreateLogger();
下面是在Configure()中
loggerfactory.AddSerilog();
来自 services.Configure<>() 的错误是:
System.TypeLoadException occurred HResult=0x80131522 Message=Method 'get_Name' in type 'Microsoft.Extensions.Options.ConfigurationChangeTokenSource`1' from assembly 'Microsoft.Extensions.Options.ConfigurationExtensions, Version=1.1.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation. Source=Microsoft.Extensions.Options.ConfigurationExtensions StackTrace: at Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure[TOptions](IServiceCollection services, IConfiguration config) at NGB.IFS.PurchApp.Services.Startup.ConfigureServices(IServiceCollection services) in C:\Users\saynort\Documents\Repos\ngb.ifs.purchapp\ngb.ifs.purchapp\NGB.IFS.PurchApp.Services\Startup.cs:line 86
我安装了 serilog、serilog.extensions.logging 和 serilog.sinks.file Nuget 软件包。
最佳答案
来自Serilog.Extensions.Logging Github project :
ASP.NET Core 2.0 applications should prefer Serilog.AspNetCore and
UseSerilog()
instead.
删除 Serilog 和 Serilog.Extensions.Logging 包。然后,使用以下命令安装 Serilog.AspNetCore 包:
PM> Install-Package Serilog.AspNetCore -DependencyVersion Highest
关于c# - Serilog 实现打破了其他配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46977606/