与共享点站点中的SitePage列表关联的Drive中所有DrivesItem的上传失败。
图形API请求:
UploadSession uploadSession = GraphCLient.Sites[{SiteId}].Drives[{DriveId of SitePages List }]. Items[{DriveFolderID}].ItemWithPath(driveItem.Item.Name).CreateUploadSession().Request().PostAsync().Result;
uploadSession将成功创建,但是 chunkuploadprovider 会出错。
错误响应:代码:accessDenied消息:呼叫者没有 执行操作的权限。内部错误
代码段:
private void UploadItem(OneDriveJsonStructure driveItem)
{
try
{
MemoryStream memStream = (MemoryStream)driveItem.Content;
byte[] buffer = memStream.ToArray();
DriveItem item = null;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer))
{
UploadSession uploadSession = this._SharepointOperations._GraphCLient.Sites[this._SiteId].Drives[this._DriveId].Items[this._DriveFolderId].ItemWithPath(driveItem.Item.Name).CreateUploadSession().Request().PostAsync().Result;
var provider = new ChunkedUploadProvider(uploadSession, this._SharepointOperations._GraphCLient, memStream);
var chunkRequests = provider.GetUploadChunkRequests();
var readBuffer = new byte[buffer.Length];
var trackedExceptions = new List<Exception>();
DriveItem itemResult = null;
foreach (var request in chunkRequests)
{
// Send chunk request
var result = provider.GetChunkRequestResponseAsync(request, readBuffer, trackedExceptions).Result;
if (result.UploadSucceeded)
{
itemResult = result.ItemResponse;
item = result.ItemResponse;
}
}
if (itemResult == null)
{
UploadChunkResult result = null;
// Retry the upload ...
foreach (var request in chunkRequests)
{
// Send chunk request
result = provider.GetChunkRequestResponseAsync(request, readBuffer, trackedExceptions).Result;
}
item = result.ItemResponse;
}
}
item.Permissions = driveItem.Item.Permissions;
GivePermission(item);
从Azure AD向客户端应用提供权限:
即使具有所有这些权限,它也会给出以下错误消息:
“呼叫者无权执行该操作”。
需要哪些权限才能执行此操作?
其他驱动器的driveItem的上传成功执行。
答案 0 :(得分:1)
现在其他驱动器的driveItem上传成功执行,您的代码应该可以了。
因此,解决此问题的关键在于用户的SharePoint权限。
请检查用户帐户是否可以将文件上传到SharePoint网站的目标文件夹中。
如果用户无权执行此操作,则需要使用管理员帐户向用户授予编辑权限。
详细步骤:
一种快速的方法:与用户共享此文件夹(具有编辑权限)。
在文件夹名称旁边,单击省略号... 。在文件弹出窗口中,单击共享。在“共享”对话框上,遵循屏幕截图。
更新:
请注意,我们无法将任何文档上载到“网站页面”文档库中。还不支持使用API。