5
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.Assembly.GetTypes()
   at Microsoft.Tools.SvcHost.ServiceHostHelper.LoadServiceAssembly(String svcAssemblyPath)

我如何循环通过 LoaderExceptions 属性来查看发生了什么错误,因为它没有命中任何服务,并在它运行任何代码之前给我这个错误?

谢谢

4

2 回答 2

11

我设法解决了这个问题。我的一个项目设置为 x86,其他项目设置为 Any CPU。将所有更改为任何 CPU 为我解决了这个问题。

谢谢

于 2011-03-01T12:43:51.540 回答
3

解决方案对我来说是不同的。这对于甚至对 WCF 开发非常熟悉的人来说可能是显而易见的信息。但希望它能帮助其他遇到同样问题的新手,这就是我想出的。

原来我正在调试的应用程序根本不需要 WcfSvcHost.exe。WcfSvcHost.exe 用于自承载 WCF 应用程序。该应用程序使用了作为 Web 应用程序端点公开的服务。

最终让我意识到这一点的是:首先,这个屏幕会出现:

错误信息截图

我注意到这在 Windows 任务管理器中显示为 WcfSvcHost.exe 的单独进程。这解释了为什么即使在抛出 System.Reflection.ReflectionTypeLoadException 时我将异常设置调整为中断时,调试器也无法中断。Visual Studio 没有中断,因为它没有附加到 WcfSvcHost.exe 进程。它附加到运行我的应用程序的 IISExpress.exe 进程。但是 WcfSvcHost.exe 进程正在引发异常。

当我单击上面错误消息上的确定按钮时,WcfSvcHost.exe 进程将退出并且不再出现在任务管理器中。但该应用程序仍然运行良好。很明显,无论发生什么都不需要。与另一位开发人员的快速检查确认该应用程序不需要自托管 WCF 服务。

出于某种原因,Visual Studio 无论如何都在启动 WcfSvcHost.exe。这最终使我得到了这个答案。WCF 类库项目可以配置为在调试开始时启动 WcfSvcHost.exe。

答案是右键单击每个 WCF 类库项目,选择“属性”,然后单击“WCF 选项”选项卡。然后在同一解决方案中调试另一个项目时取消选中 Start WCF Service Host

WCF 类库属性页面的屏幕截图,WCF 选项选项卡

您必须对解决方案中的所有 WCF 类库执行此操作。我不确定哪个是哪个,所以我只是查看了每个类库的属性并修复了具有 WCF 选项选项卡的那些。

于 2019-06-11T17:12:48.447 回答