2013-02-21 104 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。

這將讓您訪問您的服務中的所有錯誤。然後您可以記錄所有異常及其內部異常。

希望這會有所幫助。