Sharepoint online API returns: HTTP 错误 400。请求 header 字段太长

Sharepoint online API returns: HTTP Error 400. A request header field is too long

我有一个循环,可以循环遍历我的数据库中的记录,提取我需要的信息,然后创建 3 个文件夹并上传一个文件。

对于大约 40 条记录,这可以正常工作,但随后它开始出错,并从共享点返回以下响应:<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<HTML><HEAD><TITLE>Bad Request</TITLE>\r\n<META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; charset=us-ascii\"></HEAD>\r\n<BODY><h2>Bad Request - Header Field Too Long</h2>\r\n<hr><p>HTTP Error 400. A request header field is too long.</p>\r\n</BODY></HTML>

我不确定发生了什么,我在网上阅读了它与 cookie 的待办事项,但我正在使用 HTTPClient 发送请求,所以我不知道这会如何影响它?我也在网上看到关于换红隼的?

任何人都可以帮我解释一下吗?为我提供一个简单但有效的解决方案?我不使用 CSOM 在线集成到共享点,我使用 HTTP 请求,下面是我如何与共享点交互的示例。

好像我被暂时阻止或禁止了,因为如果我稍等片刻,然后我可以提出之前失败的相同请求,而且它会起作用!好奇怪。

示例代码(用于在 Sharepoint 创建资源):

//Set Endpoint
var sharePointEndpoint = $"https://{hostname}/sites/{site}/_api/web/folders";

//Set default headers
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sharePointToken); //Set token
client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");

//Pre-Body data setup
var metaData = new MetaDataModel();
metaData.type = "SP.Folder";

//Body data setup
var bodyModel = new ExpandoObject() as IDictionary<string, object>;
bodyModel.Add("__metadata", metaData);
bodyModel.Add("ServerRelativeUrl", location + "/" + directoryName + "/");

//Set content headers
HttpContent strContent = new StringContent(JsonConvert.SerializeObject(bodyModel));
strContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
strContent.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("odata", "verbose"));

// Send request, grab response
var response = await client.PostAsync(sharePointEndpoint, strContent);

//Return response message
return response;

原来我需要在发送请求时使用Content-Length header,完成后我能够成功地与sharepoint通信而没有遇到这个错误。

这里有更多信息:https://social.technet.microsoft.com/Forums/en-US/26459f1c-945d-4112-9200-69c5a33a37ff/sharepoint-online-rest-api-returns-http-error-400-a-request-header-field-is-too-long?forum=sharepointdevelopment

谢谢。