使用C#连接到Office 365上的Sharepoint时如何修复“操作已超时”

时间:2019-10-31 05:05:37

标签: c# sharepoint office365 sharepoint-online csom

从asp.net Web应用程序连接到Office 365 Sharepoint时出现“操作已超时”错误

我试图找到答案并实施以下解决方案:

How to connect to SharePoint on Office 365 with CSOM from C#?

也有一些博客建议进行异步查询,这不会引发错误,但不会给出任何结果。 还尝试在没有任何帮助的情况下设置超时属性。

下面是我的代码:

    SharePointOnlineCredentials networkCredential = new 
    SharePointOnlineCredentials(SharePointUser, SharePointPassword);
    Context = new ClientContext(SharePointURL);
    Context.Credentials = networkCredential;
    Web = Context.Web;
    Context.Load(Web);
    Context.ExecuteQuery();`

奇怪的是,我能够使用控制台应用程序进行连接并获取数据,但是我需要在Web应用程序中使其正常工作。

2 个答案:

答案 0 :(得分:1)

经过大量搜索,我意识到我们需要代理才能连接到Sharepoint Online,并实现了以下代码来实现

clientContext.ExecutingWebRequest + =(s,e)=>                     {                         e.WebRequestExecutor.WebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;                     };

答案 1 :(得分:0)

在代码中添加clientContext.RequestTimeout = -1,下面的代码供您参考。

string siteUrl = "https://tenant.sharepoint.com/sites/lz";
string userName = "lz@tenant.onmicrosoft.com";
string password = "xxx";

var securePassword = new SecureString();
foreach (char c in password.ToCharArray()) securePassword.AppendChar(c);
using (ClientContext clientContext = new ClientContext(siteUrl))
{
    clientContext.Credentials = new SharePointOnlineCredentials(userName, securePassword);
    clientContext.RequestTimeout = -1;
    var web = clientContext.Web;
    clientContext.Load(web);
    clientContext.ExecuteQuery();
}