自我托管WCF和System.ServiceModel.FaultException
问题描述:
我有一个简单的WCF服务库项目(调用此项目W)与目录X中的一些DLL。我将W的启动目录设置为X,所有方法都正常工作在Visual Studio 2010中使用WcfServiceHost。自我托管WCF和System.ServiceModel.FaultException
我想自我托管W,所以,我创建了一个控制台Project(称为此项目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都相当陌生,任何提示都是值得的。
答
您可以订阅事件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;
}
答
您需要确定此错误是否在服务或客户端。
从错误消息,它似乎这是一个服务方面的错误。您可以从http://msdn.microsoft.com/en-us/library/gg281715.aspx实现IErrorHandler。
这将让您访问您的服务中的所有错误。然后您可以记录所有异常及其内部异常。
希望这会有所帮助。
在.Net SDK中使用[fuslogvw.exe](http://msdn.microsoft.com/en-us/library/e74a18c4(v = vs.100).aspx) – rene 2013-02-21 19:02:12
谢谢,@rene,nothing显示在fuslogvw.exe中,有没有进一步的想法? – 2013-02-21 20:30:22
可能是不存在的.Net dll,请尝试[ProcessExplorer](http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx),然后在“结果”列中查找FAILED。 – rene 2013-02-22 08:22:14