2009-07-21 34 views
1

我有一臺計算機充當WCF服務主機。客戶端機器將運行多個客戶端進程,每個客戶端進程也在不同的端口(5601,5602等)上託管WCF服務。客戶端進程將握手主機。一旦收到握手信號,主機將發回一些數據。按照主機上的單獨方法的指示,客戶端進程一個接一個地產生。但是,在啓動多個實例後,我仍然收到以下異常:承載一個WCF服務被多個消費者使用,得到FaultException

由於內部錯誤,服務器無法處理請求。有關該錯誤的更多信息,請在服務器上打開IncludeExceptionDetailInFaults(來自ServiceBehaviorAttribute或來自配置行爲),以便將異常信息發送回客戶端,或根據Microsoft .NET Framework 3.0 SDK文檔啓用跟蹤並檢查服務器跟蹤日誌。

然而,當我在產卵之間添加延遲時,似乎沒有問題。這會導致什麼,我該如何解決?

在遠程系統上產生立即嘗試與主系統上的控制器服務握手的進程。

 target.InitiateTestProcess(a); 
     //System.Threading.Thread.Sleep(1000); 
     target.InitiateTestProcess(b); 

而對於握手

public void Handshake(Uri connectBack) 
    { 
     IWorkerContract client = ChannelFactory<IWorkerContract>.CreateChannel(
      new BasicHttpBinding(), 
      new EndpointAddress(new Uri(connectBack, "Worker"))); 

     client.PassUUT(clients[connectBack]); 
    } 

如果需要額外的信息,我會盡量解決您的問題,以我的能力,請發表評論。

回答

0

我解決了這個問題,我啓用了IncludeExceptionDetailInFaults消費者,所以他們會報告異常詳細信息。工作人員正在創建和讀取文件,通常是同一個文件(通過測試,它始終是同一個文件),並且偶爾有兩個進程會嘗試讀取同一個文件時發生衝突。