2012-07-31 91 views
1

我收到來自Sharepoint客戶端託管對象模型的超時。Sharepoint客戶端模型 - 請求超時

Microsoft.SharePoint.Client.ServerException: The operation has timed out. 

基本上,我正在批量處理100個更新並一次發送它們。如果需要時間,對我來說沒有問題,但我真的想要避免超時異常。

我嘗試了百萬種方法來增加客戶端上下文中的超時,但他們都沒有成功。我使用反射來嘗試標識共享點在調用客戶端上下文的executequery方法時正在執行的操作。共享點基本上是創建一個HttpWebRequest併發送它。

我曾與下面的代碼結束了,但還是沒有成功:

public static void SetInfinteTimeout(this ClientContext ctx) 
{ 
    int timeout = 10 * 60 * 1000; 
    ctx.RequestTimeout = timeout; 
    ctx.PendingRequest.RequestExecutor.RequestKeepAlive = false;    
    ctx.PendingRequest.RequestExecutor.WebRequest.KeepAlive = false; 
    ctx.PendingRequest.RequestExecutor.WebRequest.Timeout = timeout; 
    ctx.PendingRequest.RequestExecutor.WebRequest.ReadWriteTimeout = timeout;    
    System.Net.ServicePointManager.DefaultConnectionLimit = 200; 
    System.Net.ServicePointManager.MaxServicePointIdleTime = 2000; 
    System.Net.ServicePointManager.MaxServicePoints = 1000; 
    System.Net.ServicePointManager.SetTcpKeepAlive(false, 0, 0); 
    ServicePointManager.DnsRefreshTimeout = timeout; // 10 minutes  

} 

但我仍然收到超時錯誤!
請問我還有什麼其他的東西嗎?


任何援助將不勝感激。

回答

0

的解決方案是使用clientcallablesettings(SPWebApplication.ClientCallableSettings):
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.clientcallablesettings.aspx
這具有的執行超時屬性和其它相關設置。

+1

好的,但您如何獲得SPWebApplication? – Vroomfundel 2013-09-30 14:41:53

+0

嗨添加引用sharepoint.administration – 2013-09-30 18:43:01

+0

最好的解決方案是使用服務器對象模式,而不是客戶端對象模型。使用服務器對象模型,你將不會面臨這些問題,並不需要調整/更改SP設置,你會避免很多頭痛。 – Zakos 2015-05-06 08:05:31

1

你試過

  • 保持默認的KeepAlive(真),
  • 禁止超時和
  • 保持默認MaxServicePointIdleTime值(也就是100秒 默認值,但您設置爲2)。

正如:

public static void SetInfiniteTimeout(this ClientContext ctx) 
{ 
    ctx.RequestTimeout = -1; //ctx.RequestTimeout or System.Threading.Timeout.Infinite; 
} 

而且,多少秒需要讓你得到超時錯誤,在當前的配置?

+0

嗨,謝謝你的回覆。是的,我試過了所有的超時設置。它在1.5分鐘後超時。最終,問題通過使用客戶端可調用設置來解決。再次感謝。輸入+1。 – 2012-08-11 05:28:01