我正在尝试更新驱动器项的父引用,其中驱动器项的名称或包含特殊字符(例如%25
的新父路径,以及新父项和项都在同一组中,并且开车。
当新父母的路径包含这些字符时,我将获得无效的请求异常。
当更新驱动器项目的名称包含那些字符时,出现“找不到项目”异常,但是在从项目名称中删除25
之后,该项目被移动到了目的地。
除了这两种情况外,我的代码都工作正常。
这是我尝试做的事情:
destinationPath = Uri.EscapeDataString(destinationPath);
var destination = await client
.Groups[groupId]
.Drives[driveId]
.Root
.ItemWithPath(destinationPath)
.Request()
.GetAsync();
DriveItem newItem = new DriveItem {
ParentReference = new ItemReference { Id = destination.Id }
};
sourcePath = Uri.EscapeDataString(sourcePath);
var movedItem = await client
.Groups[groupId]
.Drives[driveId]
.Root
.ItemWithPath(sourcePath)
.Request()
.GetAsync();
var result = await client
.Groups[groupId]
.Drives[driveId]
.Items[movedItem.Id]
.Request()
.UpdateAsync(newItem);
答案 0 :(得分:1)
OneDrive在文件名或路径名中不支持%
(或其他几个特殊字符)。这与Microsoft Graph没有关系,OneDrive本身(或与此相关的许多文件系统)不支持它们。
来自Invalid file names and file types in OneDrive, OneDrive for Business, and SharePoint:
OneDrive,Office 365上的OneDrive for Business和SharePoint Online的文件和文件夹名称中不允许使用的字符:
" * : < > ? / \ |
SharePoint Server 2013上的OneDrive for Business中文件和文件夹名称中不允许的字符:
~ " # % & * : < > ? / \ { | }.