2017-10-27 7 views
2

우리 프로젝트에 serilog를 구현합니다. 우리는 이미 AspNetCoreRateLimit을 구현하여 API 호출을 어렵게합니다. 이 프로젝트는 .Net 핵심 프로젝트이지만 일부 종속성으로 인해 Net461을 대상으로합니다.Serilog 구현 다른 구성을 깨기

serilog 이전에는 api가 정상이었습니다.

이제 serilog를 설치하면 오류가 발생합니다.

이 오류는 serilog가 도입 될 때까지 이전에 작동했던 것을 호출하는 것으로부터 시작됩니다. 아래

Log.Logger = new LoggerConfiguration() 
      .WriteTo.File("Logs/FSCPAPI-{Date}.log") 
      .CreateLogger(); 

를)

loggerfactory.AddSerilog(); 

이 오류가 services.Configure <> (에서 오는 구성()에 있습니다 : :

services.Configure<IpRateLimitOptions>(_configuration.GetSection("IpRateLimiting")); 

시작은()가

System.TypeLoadException이 발생했습니다. HResult = 0x80131522 메시지 'Microsoft.Extensions.Options.ConfigurationChangeTokenSource`1'형식의 'get_Name'메서드 'Microsoft.Extensions.Options.ConfigurationExtensions, Version = 1.1.2.0, Culture = neutral, PublicKeyToken = adb9793829ddae60'의 어셈블리에서 'get_Name'메서드가 수행됩니다. 구현이 없다. 자료 = Microsoft.Extensions.Options.ConfigurationExtensions 스택 트레이스 : Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure [TOptions (IServiceCollection 서비스 IConfiguration 구성)에서 NGB.IFS.PurchApp.Services.Startup.ConfigureServices 에서 (IServiceCollection 서비스) C에서 : \ 사용자 \ saynort 문서 \ \ 레 포스 \ ngb.ifs.purchapp \ ngb.ifs.purchapp \ NGB.IFS.PurchApp.Services \ Startup.cs : 라인 86

내가 serilog을 가지고 serilog .extensions.logging 및 serilog.sinks.file Nuget 패키지가 설치되었습니다. Serilog.Extensions.Logging Github project에서

답변

5

:

ASP.NET 코어 2.0 응용 프로그램 Serilog.AspNetCoreUseSerilog() 대신 선호한다.

Serilog 및 Serilog.Extensions.Logging 패키지를 제거하십시오. 그런 다음 다음을 사용하여 Serilog.AspNetCore 패키지를 설치하십시오.

PM> Install-Package Serilog.AspNetCore -DependencyVersion Highest 
+0

감사합니다. 더 매끄러운지를 알기 위해 이것을 줄 것입니다! – Tezza

+0

나는 이것을 제공했지만, .Net Core 2 프로젝트 인 경우에만이 솔루션이 작동합니다. 이것은 아닙니다. 업그레이드를 시도하면 빌드 및 종속성으로 인해 다음과 같이 할 수 있습니다. 오류 "패키지 Microsoft.AspNetCore.All 2.0.0은 net461과 호환되지 않습니다."라는 오류가 나타납니다. 이것은 (제 3 자) 포함해야하는 종속성으로 인해 타겟 빌드입니다. – Tezza

+0

질문에서 ASP.NET 코어 2.0을 사용하여 언급 한 적이 있기 때문에 마음을 놓칠 수밖에 없습니다. 그럼에도 불구하고 어쨌든 업그레이드하는 것이 좋습니다. .NET Core 2.0은 .NET Standard 2.0을 구현합니다. 즉, 이제 거의 모든 .NET Framework 라이브러리를 사용할 수 있습니다.결과적으로, 참조하는 라이브러리가 실제로 Windows 관련 작업을 수행하지 않는 한 전체 프레임 워크에서 실행할 필요가 없습니다. –