【发布时间】:2022-01-18 23:44:07
【问题描述】:
我正在尝试将 SharePoint 文件上传功能添加到我的 C# MVC 项目中。
以下是我的代码:
var sourceFilePath = @"Z:\itworked.txt";
var targetUrl = "/Project Room Test";
using (var ctx = new ClientContext("https://company.sharepoint.com/sites/ProjectRoom"))
{
SecureString passWord = new SecureString();
foreach (char c in "ThisIsNotMyPWD123".ToCharArray()) passWord.AppendChar(c);
ctx.Credentials = new SharePointOnlineCredentials("username@company.com", passWord);
//Upload file
var targetFileUrl = String.Format("{0}/{1}", targetUrl, Path.GetFileName(sourceFilePath));
using (var fs = new FileStream(sourceFilePath, FileMode.Open))
{
Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, targetFileUrl, fs, true);
}
}
我知道第一行代码有效,因为如果我通过删除文件扩展名 (.txt) 来更改它,我会收到一条错误消息,指出找不到文件。
我知道第 4-10 行有效,因为我能够执行一个测试,在该测试中我抓取了 web.Title 并将其设置为与申请表中的 Notes 字段相同。此操作需要我的凭据。
产生的错误是 401 Unauthorized against line 17 => Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, targetFileUrl, fs, true);
我认为问题在于 targetUrl 和/或 targetFileUrl。
以下是我可以拖放文件的位置的URL:https://company.sharepoint.com/sites/ProjectRoom/Project%20Room%20Test/Forms/AllItems.aspx
如果我拖放一个文件然后复制它的链接,结果如下:https://company.sharepoint.com/:t:/r/sites/ProjectRoom/Project%20Room%20Test/itworked.txt?btg=2&web=2&e=7kesiF
【问题讨论】:
标签: c# asp.net-mvc sharepoint file-upload http-status-code-401