首页 > 解决方案 > 在 .Net Core API 中使用 ASMX 服务:System.Reflection.ReflectionTypeLoadException:无法加载一种或多种请求的类型

问题描述

尝试启动部署在 IIS 上的 .Net Core API 应用程序时,日志文件出现以下错误。根据许多帖子(IIS 中的配置更改等)尝试了许多解决方法,但仍然无法解决此问题。特别尝试添加日志以使用此链接查找特定丢失的 dll,与ASP.NET Core MVC 应用程序中的 .Net Core ReflectionTypeLoadException相关

但它没有记录任何与此异常相关的特定日志消息。日志中只有上述错误。

这是一个 .Net Core API 应用程序(带有 Visual Studio 2017 的 Net Core 2.0)。在 Windows 10 和 Windows Server 2012 R2 的 IIS 上部署。日志文件中存在相同的错误。

我在这里发现的主要问题是:这个项目添加了对 SOAP 服务(asmx 服务)的引用。删除此服务引用时,不会出现此类错误。似乎应用程序正在尝试从其他地方获取相关的 dll,而不是从已发布的文件夹中获取。可能来自 GAC。但也将与“system.servicemodel.*”相关的 dll 复制到 GAC(这些是通过 Visual Studio 中的连接服务添加该服务引用时自动添加的 dll(来自 Nuget))。

这仅在部署后(在 IIS 上)发生。从源代码运行此应用程序时,这工作正常。没有这样的错误。我不确定这些新版本的 .Net Core 部署后是否不支持 asmx 服务。

感谢解决此问题的任何帮助,因为我们需要此项目中的 asmx 服务参考。谢谢你。

2018-10-01T10:10:42.6383743+01:00 0HLH7FMNJ4U50:00000002 [ERR] 连接 ID ""0HLH7FMNJ4U50"",请求 ID ""0HLH7FMNJ4U50:00000002"":应用程序引发了未处理的异常。(560e7d32) System.Reflection.ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。在 System.Reflection.RuntimeModule.GetTypes(RuntimeModule 模块) 在 Microsoft.AspNetCore.Mvc.ApplicationParts 在 Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider.PopulateFeature(IEnumerable1 部分​​,ControllerFeature 功能) 的 System.Reflection.RuntimeAssembly.get_DefinedTypes()。 Microsoft.AspNetCore.Mvc.Internal.ControllerActionDescriptorProvider 上的 ApplicationPartManager.PopulateFeature[TFeature](TFeature 功能)。

PS:我可以解决这个问题。我在下面的评论中添加了我找到的解决方案。

标签: c#web-servicesiis.net-coreasmx

解决方案


我可以通过在 .Net Core 2.0 项目中包含一个 .Net 标准项目来解决这个问题(在 .Net Core 项目中添加了 .Net 标准项目引用)。


推荐阅读