自托管WCF和System.ServiceModel.FaultException

本文关键字:System ServiceModel FaultException WCF | 更新日期: 2023-09-27 18:00:23

我有一个简单的WCF服务库项目(称为项目W),在目录X中有几个DLL。我将W的启动目录设置为X,所有方法都可以在Visual Studio 2010中使用WcfServiceHost正常工作。

我想自己托管W,所以,我创建了一个控制台项目(称为项目C),添加了对W的引用,将W的启动目录设置为X,然后基本上有以下几行代码

var host = new ServiceHost(typeof(EvalService));
host.Open();

当我现在测试W中的方法时,我得到的是System.ServiceModel.FaultException{"The specified module could not be found. (Exception from HRESULT: 0x8007007E)"}

这意味着什么?我如何判断它正在尝试加载哪个模块?

我对C#和WCF都很陌生,任何提示都会被赞赏。

自托管WCF和System.ServiceModel.FaultException

您可以订阅事件AppDomain.AssemblyResolve,并在调试器中查看哪个程序集有问题。

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += OnAssemblyResolve;
...
private static Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
{
   Console.WriteLine(args.RequestingAssembly); //set breakpoint there
   return null;
}

您需要确定此错误是在服务中还是在客户端中。

从错误消息来看,这似乎是一个服务端错误。您可以从实现IErrorHandlerhttp://msdn.microsoft.com/en-us/library/gg281715.aspx.

这将使您能够访问服务中的所有错误。然后,您可以记录所有异常及其内部异常。

希望这能有所帮助。