如何更新 Sharepoint CSOM 中的文件元数据?

How to update File metadata in Sharepoint CSOM?

我知道过去有人问过这个问题,但我似乎找不到有效的解决方案。 我想更新我使用 CSOM 上传的文件的 CreatedDateTime、ModifiedBy 和 CreatedBy 元数据。我有这个代码。它不会崩溃,但也不会更新属性。

            FileCreationInformation newFile = new FileCreationInformation();
            byte[] FileContent = null;
           
            using (var webClient = new WebClient())
            {
                webClient.Headers.Add("Authorization", authorization);
                FileContent = webClient.DownloadData(file.DowlnloadUrl);
            }

            newFile.ContentStream = new System.IO.MemoryStream(FileContent);
            newFile.Url = System.IO.Path.GetFileName(file.Name);
            Microsoft.SharePoint.Client.File sharepointFile = _spFolder.Files.Add(newFile);
            _context.ExecuteQuery();

            sharepointFile.ListItemAllFields["Modified"] = DateTime.Today.AddDays(-3);
            sharepointFile.ListItemAllFields["Created"] = DateTime.Today.AddDays(-3);
            sharepointFile.ListItemAllFields.Update();
            _context.ExecuteQuery();

该文件仍然显示为 created/modified 几秒钟前。

如有任何帮助,我们将不胜感激。 PS:如果这可以做到一次(一个单独的 ExecuteQuery),那就太好了。

我最终找到了一个有效的代码片段。 请注意,这仅在您用于生成上下文的帐户是 Sharepoint Admin(具有 SP 管理员角色,而不仅仅是全局管理员角色)时有效。 作为网站的所有者也不够。

代码可以在这里找到: https://www.c-sharpcorner.com/blogs/update-a-sharepoint-listitem-without-increasing-its-item-file-version-using-sharepoint-client-side-modelcsom