2011-12-28 126 views
0

我把我的WCF服務拋出後出現錯誤,出現此錯誤:如何有效地處理WCF服務與錯誤處理

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

錯誤是由使用
throw new FaultException<DatabaseFault>(new DatabaseFault(e.Message));

如何服務拋出我可以如何處理這種情況,而不必每次都重新啓動客戶端和服務?

我使用WCF 4.0,C#。

編輯1:我使用net.tcp綁定爲WCF服務。

編輯2:我想要一個有效的方式來使用WCF。這與John S所說的無關。

編輯3:我的代碼有效。但我認爲它不像它應該(它被設計的方式)運行。

這是它承載我的服務控制檯應用程序:

using (ServiceHost host = new ServiceHost(typeof(AuctionService))) 
     { 
      Console.WriteLine("AuctionWCF.TestHost Started"); 
      host.AddServiceEndpoint(
       typeof(IAuctionService), 
       new NetTcpBinding(), 
       "net.tcp://localhost:9000/AuctionWcfEndPoint"); 
      host.Open(); 
      Console.WriteLine("AuctionWCF.TestHost listens for requests"); 

      Console.ReadLine(); 
     } 

這是客戶:

AuctionService = new ChannelFactory<IAuctionService>(
      new NetTcpBinding(), 
      new EndpointAddress("net.tcp://localhost:9000/AuctionWcfEndPoint")).CreateChannel(); 

難道我做錯了什麼?

+0

的[什麼是WCF客戶端的最佳解決方法'using'阻止問題?(http://stackoverflow.com/questions/可能重複anothe很好的答案573872 /什麼是最好的解決方法爲wcf客戶端使用塊問題) – 2011-12-28 17:51:27

+0

這是如何不高效?另外,我剛剛發現了你確切的問題。你爲什麼認爲不是這樣? – 2011-12-28 18:23:49

+0

我不想每次打電話給WCF時打開一個頻道。我想每次都使用同一個頻道,如果它無法啓動另一個頻道。我剛開始使用WCF工作,並希望針對此問題提供一些策略 – 2011-12-28 18:28:44

回答

1

您是否使用ChannelFactory?如果是這樣,this answer顯示了一個ChannelFactoryManager的例子,它對我來說非常有用。

+0

是的,我使用一個頻道工廠 – 2011-12-28 18:33:55