2013-02-21 134 views
0

我有一个简单的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都相当陌生,任何提示都是值得的。

+0

在.Net SDK中使用[fuslogvw.exe](http://msdn.microsoft.com/en-us/library/e74a18c4(v = vs.100).aspx) – rene 2013-02-21 19:02:12

+0

谢谢,@rene,nothing显示在fuslogvw.exe中,有没有进一步的想法? – 2013-02-21 20:30:22

+0

可能是不存在的.Net dll,请尝试[ProcessExplorer](http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx),然后在“结果”列中查找FAILED。 – rene 2013-02-22 08:22:14

回答

0

您可以订阅事件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; 
} 
0

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

从错误消息,它似乎这是一个服务方面的错误。您可以从http://msdn.microsoft.com/en-us/library/gg281715.aspx实现IErrorHandler。

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

希望这会有所帮助。