在尝试启动部署在IIS上的.Net Core API应用程序时,日志文件中出现以下错误。根据许多帖子(IIS中的配置更改等),尝试了许多解决方案,但仍然无法解决此问题。特别尝试使用此链接添加日志以查找特定的缺失dll,该链接与ASP.Net Core MVC应用程序中的.Net Core ReflectionTypeLoadException有关
- 创建了一个ExceptionCatchMiddleware扩展类
- 在Startup.cs的Configure()方法中添加了它:
但它没有记录任何与此异常相关的特定日志消息。日志中只有上述错误。
这是一个.Net Core API应用程序(带有Visual Studio 2017的Net Core 2.0)。在Windows 10&Windows Server 2012 R2。日志文件中也存在相同的错误。
我在这里发现的主要问题是:这个项目添加了对SOAP服务(asmx服务)的引用。删除此服务引用时,不会出现此类错误。似乎应用程序正在尝试从其他位置获取相关的dll,而不是从已发布的文件夹中获取。可能来自GAC。但也将与"system.servicemodel.*"相关的dll复制到了GAC(这些是在Visual Studio中通过Connected Services添加该服务引用时自动添加的dll(来自Nuget))。
只有在部署(在IIS上)之后才会发生这种情况。当从源代码运行此应用程序时,这可以很好地工作。没有这样的错误。我不确定这些新版本的.Net Core在部署后是否不支持asmx服务。
感谢为解决此问题提供的任何帮助,因为我们在该项目中需要asmx服务参考。非常感谢。
2018-10-01T10:10:42.6383743+01:00 0HLH7FMNJ4U50:0000000 2[ERR]连接id"0HLH7FMNJ4U50",请求id"0 HLH7FMnJ4U50:000000 2":应用程序引发未处理的异常。(560 e7d32)System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取详细信息。位于System.Reflection.RuntimeModule.GetTypes(RuntimeModule模块)位于System.Reflection.RuntimeAssembly.get_DefinedTypes()位于的Microsoft.AspNetCore.Mvc.Controller.ControllerFeatureProvider.PopulateFeature(IEnumerable1部件,ControllerFeature功能)位于的Microsoft.AspNetCore.Mvc.Interal.ControllerActionDescriptorProvider.BuildModel()Microsoft.AspNetCore.Mvc.Interal.ActionDescriptorCollectionProvider.get_ActionDescriptors()(位于Microsoft.AspNetCore.Mvc.Interal.AttributeRoute.GetTreeRouter())(位于Microsoft)System.Runtime.ExceptionServices.ExceptionDispatchInfo.Sthrow()(位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)(位于Microsoft.AspNetCore.Builder.RouterMiddleware.d_4.MoveNext())--从上一个引发异常的位置开始的堆栈跟踪结束--位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务),位于Microsoft.AspNetCore.Server.IIISIntegration.IIISMiddleware.d_11.MoveNext()--从引发异常的前一位置开始的堆栈跟踪结束--位于的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Sthrow()System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务),位于Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.d_3.MoveNext()--从引发异常的前一位置开始的堆栈跟踪结束--位于的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Sthrow()Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame1.d__2.MoveNext()上的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)2018-10-01T10:10:42.6385488+01:00 0HLH7FMNJ4U50:0000000 2[INF]请求在11.3774ms 500(791a596a)中完成
PS:我可以解决这个问题。我在下面的评论中添加了我找到的解决方案。
我通过包含一个来解决这个问题。Net标准项目到。Net Core 2.0项目(添加了对.Net Core项目的.Net标准项目参考)。