如何解决 Sharepoint CSOM HTTP 请求错误 429?
How to solve Sharepoint CSOM HTTP Request Error 429?
sharepoint 经常显示错误 429(请求太多),我们已经采取了下面文章中描述的所有操作,但仍然有一些请求被阻止。
我们的方案涉及 Word、Excel、Power Point 和 Outlook 的自定义桌面应用程序(加载项),它通过 CSOM(使用用户的网络凭据)访问 Sharepoint,我们已经注册了此加载项通过“/_layouts/15/AppRegNew.aspx”页面并用 "NONISV|{OUR ORGANIZATION NAME}|{OUR ADDIN NAME}/1.0 " 装饰我们所有的请求,如:
https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins
按照这篇 Microsoft 文章中的说明进行操作:
https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins
注册 Add-In 后,在创建 SharePoint 上下文(使用 CSOM)时执行此操作:
private void Initialize()
{
this.SPCurrentContext = new ClientContext(this.Url);
if (string.IsNullOrWhiteSpace(this.Domain))
{
this.SPCurrentContext.Credentials = new SharePointOnlineCredentials(this.User, ParseToSecureString(this.Password));
}
else
{
this.SPCurrentContext.Credentials = new NetworkCredential(this.User, ParseToSecureString(this.Password), this.Domain);
}
this.RetryCount = Properties.Settings.Default.DefaultRetryCount;
this.RetryDelay = Properties.Settings.Default.DefaultRetryDelay;
this.NONISV = Properties.Settings.Default.ClientAppNONISV;
this.SPCurrentContext.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e)
{
e.WebRequestExecutor.WebRequest.UserAgent = this.NONISV; // This is the TRICK!!!
};
}
用作 User-Agent HTTP Header 的 NONISV 应该是这样的:
NONISV|{您的公司名称}|{您的 Add-In 名称}/1.0
如所述here。祝你好运!
sharepoint 经常显示错误 429(请求太多),我们已经采取了下面文章中描述的所有操作,但仍然有一些请求被阻止。
我们的方案涉及 Word、Excel、Power Point 和 Outlook 的自定义桌面应用程序(加载项),它通过 CSOM(使用用户的网络凭据)访问 Sharepoint,我们已经注册了此加载项通过“/_layouts/15/AppRegNew.aspx”页面并用 "NONISV|{OUR ORGANIZATION NAME}|{OUR ADDIN NAME}/1.0 " 装饰我们所有的请求,如:
https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins
按照这篇 Microsoft 文章中的说明进行操作:
https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins
注册 Add-In 后,在创建 SharePoint 上下文(使用 CSOM)时执行此操作:
private void Initialize()
{
this.SPCurrentContext = new ClientContext(this.Url);
if (string.IsNullOrWhiteSpace(this.Domain))
{
this.SPCurrentContext.Credentials = new SharePointOnlineCredentials(this.User, ParseToSecureString(this.Password));
}
else
{
this.SPCurrentContext.Credentials = new NetworkCredential(this.User, ParseToSecureString(this.Password), this.Domain);
}
this.RetryCount = Properties.Settings.Default.DefaultRetryCount;
this.RetryDelay = Properties.Settings.Default.DefaultRetryDelay;
this.NONISV = Properties.Settings.Default.ClientAppNONISV;
this.SPCurrentContext.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e)
{
e.WebRequestExecutor.WebRequest.UserAgent = this.NONISV; // This is the TRICK!!!
};
}
用作 User-Agent HTTP Header 的 NONISV 应该是这样的:
NONISV|{您的公司名称}|{您的 Add-In 名称}/1.0
如所述here。祝你好运!