【问题标题】:401 Error When Uploading File to SharePoint Online with SaveBinaryDirect (C#)使用 SaveBinaryDirect (C#) 将文件上传到 SharePoint Online 时出现 401 错误
【发布时间】:2021-01-18 03:56:24
【问题描述】:

我正在开发一个工具,可以将文件从本地驱动器上传到在线 SharePoint。

当我尝试通过 SharePoint.Client.File.SaveBinaryDirect() 上传文件时,我收到 401:未授权错误

这是我的代码:

var uploadFilePath = @"C:\TestFiles\testFile.pdf";
var uploadFileRelativePath = "/sites/my-site/MyLibrary/testFile.pdf";

using (var ctx = new AuthenticationManager().GetAppOnlyAuthenticatedContext(site,
                    ConfigurationManager.AppSettings["ClientId"], ConfigurationManager.AppSettings["ClientSecret"]))
{
    using (var fileStream = new FileStream(uploadFilePath, FileMode.Open))
    {
        File.SaveBinaryDirect(ctx, uploadFileRelativePath, fileStream, true);
    }
}

问题是,如果我用以下代码交换 SaveBinaryDirect,它就可以正常工作:

FileCreationInformation newFile = new FileCreationInformation();
newFile.Content = System.IO.File.ReadAllBytes(uploadFilePath);
newFile.Url = "testFile.pdf";
List docs = ctx.Web.Lists.GetByTitle("MyLibrary");
docs.RootFolder.Files.Add(newFile);
ctx.ExecuteQuery();

所以我的工具显然被授权上传文件。它只是不适用于 SaveBinaryDirect。

我仍想使用 SharePoint.Client.File.SaveBinaryDirect 上传文件。它的代码更少,我不必手动获取列表和文件夹。

您知道为什么我会收到 401 错误吗?

【问题讨论】:

    标签: c# sharepoint sharepoint-online


    【解决方案1】:

    您不能通过 SaveBinaryDirect 方法使用仅应用程序令牌:https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/upload-large-files-sample-app-for-sharepoint

    仅当您使用仅限用户的身份验证策略时才使用此方法。仅用户身份验证策略在 SharePoint 加载项中不可用,但可用于本机设备加载项、Windows PowerShell 和 Windows 控制台应用程序。

    【讨论】:

    • 这解释了错误,谢谢。您知道是否可以使用运行该工具的用户的身份验证?我知道 SharePoint 2019 是可能的。不过我不确定 Online。
    • 对不起,我不知道 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多