【问题标题】:Can't find System.Diagnostics.EventLog Version=6.0.0.0 on .NET CORE 6在 .NET CORE 6 上找不到 System.Diagnostics.EventLog Version=6.0.0.0
【发布时间】:2022-01-14 14:19:54
【问题描述】:

我将 Web 应用程序从 .NET CORE 5 迁移到 .NET CORE 6。当应用程序启动时,我在 Windows 事件查看器中收到一条错误消息,指出它找不到 System.Diagnostics.EventLog Version= 6.0.0.0...

全栈:

Application: w3wp.exe
CoreCLR Version: 6.0.21.52210
.NET Version: 6.0.0
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException: Could not load file or assembly 'System.Diagnostics.EventLog, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
File name: 'System.Diagnostics.EventLog, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
   at Microsoft.Extensions.Logging.EventLog.EventLogSettings.CreateDefaultEventLog
   at Microsoft.Extensions.Logging.EventLog.EventLogSettings.get_EventLog
   at Microsoft.Extensions.Logging.EventLog.EventLogLogger..ctor(String name, EventLogSettings settings, IExternalScopeProvider externalScopeProvider)
   at Microsoft.Extensions.Logging.EventLog.EventLogLoggerProvider.CreateLogger(String name)
   at Microsoft.Extensions.Logging.LoggerFactory.CreateLoggers(String categoryName)
   at Microsoft.Extensions.Logging.LoggerFactory.CreateLogger(String categoryName)
   at Microsoft.Extensions.Logging.Logger`1..ctor(ILoggerFactory factory)
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.Extensions.Hosting.HostBuilder.<CreateServiceProvider>b__28_2(IServiceProvider _)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.Extensions.Hosting.HostBuilder.Build()
   at MyApp.Web.Program.Main(String[] args) in F:\MyApp\web\MyAppWeb\Program.cs:line 16

我什至尝试将 System.Diagnostics.EventLog 添加为来自 nuget 的包,我认为这可能会起作用,但它没有...

跑步:

OS: Windows 10 build 19044.1348
IIS: 10.0.19041.1

我还在我的 app.config 中添加了这个以尝试强制使用旧版本:

<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Diagnostics.EventLog"
                  publicKeyToken="cc7b13ffcd2ddd51"
                  culture="neutral" />
            <bindingRedirect oldVersion="6.0.0.0" newVersion="5.0.1.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

它仍然给出同样的错误,试图找到 6.0.0.0。

这是我安装的所有软件包:

System.Diagnostics.EventLog         {6.0.0}                                  
System.Drawing.Common               {6.0.0}                                  
Microsoft.Extensions.Logging.Abs... {6.0.0}                                  
Syncfusion.Licensing                {19.3.0.57}                              
System.Security.Principal.Windows   {5.0.0}                                  
Syncfusion.EJ2.AspNet.Core          {19.3.0.57}                              
Microsoft.Extensions.Configurati... {6.0.0}                                  
Newtonsoft.Json                     {13.0.1}                                 
Microsoft.jQuery.Unobtrusive.Ajax   {3.2.6}                                  
Microsoft.Extensions.Configurati... {6.0.0}                                  
Microsoft.Extensions.Configurati... {6.0.0}                                  
Microsoft.AspNetCore.Mvc.Newtons... {6.0.0}                                  
Microsoft.Extensions.Configurati... {6.0.0}                                  
Microsoft.AspNet.Mvc                {5.2.7}                                  
Syncfusion.EJ.AspNet.Core           {19.3.0.57}                              
Microsoft.Extensions.PlatformAbs... {1.1.0}                                  
System.Data.SqlClient               {4.8.3}                                  
Microsoft.AspNetCore.Session        {2.2.0}                                  
Microsoft.Extensions.Configuration  {6.0.0}                                  
Syncfusion.Pdf.Net.Core             {19.3.0.57}                              
Microsoft.Extensions.Primitives     {6.0.0}                                  
Twilio                              {5.68.2}                                 
Microsoft.Extensions.Logging        {6.0.0}                                  
morelinq                            {3.3.2}                                  

另外,当我查看服务器上的输出文件夹时,我确实看到了 System.Diagnostics.EventLog:

有什么建议吗?

谢谢!

【问题讨论】:

  • 我很确定 .NET 6 不使用绑定重定向,所以添加 web.config 应该不会有什么不同。你检查过应用程序文件夹吗?似乎缺少System.Diagnostics.EventLog.dll。这就是你需要解决的问题。
  • 是的,我确实在应用程序文件夹中看到了 System.Diagnostics.EventLog.dll...
  • 你仍然会得到一个FileNotFoundException,所以你需要追逐它。文件名错误(不太可能)?那么错误的目录呢?您的应用程序正在尝试加载文件,但该文件丢失。由于 Fusion Log 未在“现代”.NET 中使用,因此您可以深入并使用 Process Explorer 之类的工具来准确查看您的应用程序试图加载的文件。
  • 呃,我刚刚想通了...我的软件包列表中还有 Microsoft.AspNet.Mvc 5.2.7,它正在拉入旧版本的 System.Diagnostics.EventLog。一旦我删除它,它就开始工作了......感谢您的帮助!!!

标签: .net iis .net-core


【解决方案1】:

我的软件包列表中仍有 Microsoft.AspNet.Mvc 5.2.7,它正在拉入旧版本的 System.Diagnostics.EventLog。一旦我删除它,它就开始工作了......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 2022-08-14
    • 1970-01-01
    • 2017-08-08
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多