WcfSVCHost遇到严重错误,必须退出。这可能是由配置文件无效引起的

时间:2011-02-08 09:27:15

标签: wcf wcfserviceclient typeloadexception

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属性以查看在没有命中任何服务时发生了什么错误,并在运行任何代码之前给出了这个错误?

由于

2 个答案:

答案 0 :(得分:9)

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

由于

答案 1 :(得分:0)

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

原来,我正在调试的应用程序根本不需要WcfSvcHost.exe。 WcfSvcHost.exe用于自托管WCF应用程序。这个应用程式使用的服务是公开在网路应用程式上的端点。

最终让我明白的是:首先,该屏幕将出现:

Screenshot of error message "WcfSvcHost encountered a critical error and must exit."

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

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

由于某种原因,Visual Studio无论如何都启动WcfSvcHost.exe。最终导致我进入this answer。可以将WCF类库项目配置为在调试开始时启动WcfSvcHost.exe。

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

Screenshot of WCF class library Properties page, WCF Options tab

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