【问题标题】:How to solve Sharepoint CSOM HTTP Request Error 429?如何解决 Sharepoint CSOM HTTP 请求错误 429?
【发布时间】:2019-06-21 05:39:30
【问题描述】:

sharepoint 经常显示错误 429(请求过多),我们已经采取了下面文章中描述的所有操作,但仍有一些请求被阻止。

https://docs.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

我们的方案涉及用于 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

【问题讨论】:

  • 用户在 SharePoint Online 中受到限制的情况极为罕见。该服务功能强大,旨在处理非常大的容量。如果您确实受到限制,99% 的时间是因为自定义代码 - 也许您需要优化您的 CSOM 以减少调用次数?
  • 这并不罕见,@tinamou。除非您完全按照我在问题中发布的文章中的描述进行操作,否则在使用服务帐户的 CSOM 场景中,您肯定会受到限制。幸运的是,我再次查看了这两篇文章和我的代码并让它工作。谢谢。

标签: c# sharepoint office365 csom http-status-code-429


【解决方案1】:

按照这篇 Microsoft 文章中的说明进行操作:

https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins

注册加载项后,在创建 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|{您的公司名称}|{您的加载项名称}/1.0

here 所述。祝你好运!

【讨论】:

    猜你喜欢
    • 2020-04-24
    • 2014-05-12
    • 2021-10-22
    • 1970-01-01
    • 2020-06-11
    • 2020-05-26
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多