使用特殊字符更新DriveItem会返回错误

时间:2018-06-20 09:28:01

标签: c# microsoft-graph onedrive

我正在尝试更新驱动器项的父引用,其中驱动器项的名称或包含特殊字符(例如%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);

1 个答案:

答案 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中文件和文件夹名称中不允许的字符:~ " # % & * : < > ? / \ { | }.