2011-02-22 18 views
1

我嘗試使用循環使用WCF服務在我的數據庫中生成大量用戶。 腳本和Web服務在本地運行(Cassini)。WCF在循環中調用時沒有響應

   FormWCFClient formClient = new srForm.FormWCFClient(); 
       User user; 
       int nbUser = 20000; 
       for (int i = 0; i < nbUser; ++i) 
       { 
        user = new User(); 
        user.Email = String.Format("{0}@example.com", i.ToString()); 

        formClient.AddUser(user); // Add the user in DB 
       } 

       formClient.Close(); 

的問題是,圍繞3300調用一個EndpointNotFoundException與下面的InnerException推出:「無法連接到遠程服務器」。
我需要等待大約20秒鐘才能繼續進程而不會出錯(直到3300次呼叫的下一個範圍)。

是代碼問題還是服務器限制?

+0

如果添加一個AddUsers()方法,該方法接受一個「IEnumerable 」並一次調用3000個批次的服務?你有同樣的問題嗎? – Nate 2011-02-22 18:04:53

回答

0

您可以在服務中創建一個將用戶列表作爲參數的新操作。然後,您將使用列表調用一次,而不是與一個用戶調用現有操作20000次。它可以減少網絡的負載並減輕事務的使用。

如果不可行,請激活WCF tracing並檢查呼叫失敗時會發生什麼。

+0

這不是一個壞主意,但是我面對這個解決方案的另一個問題:「在對象圖中可以序列化或反序列化的項的最大數目是...」。我知道我可以提高最大值,但這不是一個優雅的解決方案。另外,WCF跟蹤在多次調用服務時報告沒有錯誤。 – Spilarix 2011-02-24 14:12:51