无法从 OneDrive C# SDK 查看子元素
Unable to view child elements from OneDrive C# SDK
我正在针对 OneDrive C# SDK 进行编码,我被共享了一个包含多个文件的文件夹。从 onedrive.com
访问共享文件夹时,我能够查看文件——但是当尝试检查 Item
时,子项计数始终为零。我假设这可能是我的一些混淆或权限问题——但我只是想 运行 它过去进行完整性检查。
代码:
private async Task GetItem(string id = null)
{
List<string> idsToSearch = new List<string>();
var expandValue = this.clientType == ClientType.Consumer
? "thumbnails,children(expand=thumbnails)"
: "thumbnails,children";
try
{
Item folder;
if (id == null)
{
folder = await this.oneDriveClient.Drive.Root.Request()
.Expand(expandValue).GetAsync(); //root
}
else
{
folder = await this.oneDriveClient.Drive.Items[id].Request()
.Expand(expandValue).GetAsync(); //children of root
}
WriteToFile(new List<string>(new[] { @"Folder: " + folder.Name }));
if (folder.Children.Count == 0)
{
WriteToFile(new List<string>(new[] { @"NO Children" }));
}
else
{
foreach (var child in folder.Children)
{
WriteToFile(new List<string>(new[] {
@"Children of " + folder.Name + " : " + child.Name }));
}
foreach (var item in folder.Children)
{
GetItem(item.Id);
idsToSearch.Add(item.Id);
}
}
}
catch (Exception exception)
{
PresentServiceException(exception);
}
}
我还包括 Item
对象到达共享文件夹对象时的快照:
更新
在进一步查看 folder
对象后,我发现 RemoteItem
返回了正确数量的子元素——但是没有任何元数据来获取子元素.
根据对问题的评论,确定这是一个 RemoteItem
场景。远程项目与本地项目不同——虽然有一些对渲染有用的本地元数据,但项目的实际元数据存在于另一个用户的驱动器中。因此,当遇到这样的项目时,可能有必要(例如,如果您需要枚举远程文件夹的子文件夹),因为需要直接为相关项目发出后续请求(使用 driveId
来自 remoteItem.parentReference
和 remoteItem.Id
中的 id
。
我正在针对 OneDrive C# SDK 进行编码,我被共享了一个包含多个文件的文件夹。从 onedrive.com
访问共享文件夹时,我能够查看文件——但是当尝试检查 Item
时,子项计数始终为零。我假设这可能是我的一些混淆或权限问题——但我只是想 运行 它过去进行完整性检查。
代码:
private async Task GetItem(string id = null)
{
List<string> idsToSearch = new List<string>();
var expandValue = this.clientType == ClientType.Consumer
? "thumbnails,children(expand=thumbnails)"
: "thumbnails,children";
try
{
Item folder;
if (id == null)
{
folder = await this.oneDriveClient.Drive.Root.Request()
.Expand(expandValue).GetAsync(); //root
}
else
{
folder = await this.oneDriveClient.Drive.Items[id].Request()
.Expand(expandValue).GetAsync(); //children of root
}
WriteToFile(new List<string>(new[] { @"Folder: " + folder.Name }));
if (folder.Children.Count == 0)
{
WriteToFile(new List<string>(new[] { @"NO Children" }));
}
else
{
foreach (var child in folder.Children)
{
WriteToFile(new List<string>(new[] {
@"Children of " + folder.Name + " : " + child.Name }));
}
foreach (var item in folder.Children)
{
GetItem(item.Id);
idsToSearch.Add(item.Id);
}
}
}
catch (Exception exception)
{
PresentServiceException(exception);
}
}
我还包括 Item
对象到达共享文件夹对象时的快照:
更新
在进一步查看 folder
对象后,我发现 RemoteItem
返回了正确数量的子元素——但是没有任何元数据来获取子元素.
根据对问题的评论,确定这是一个 RemoteItem
场景。远程项目与本地项目不同——虽然有一些对渲染有用的本地元数据,但项目的实际元数据存在于另一个用户的驱动器中。因此,当遇到这样的项目时,可能有必要(例如,如果您需要枚举远程文件夹的子文件夹),因为需要直接为相关项目发出后续请求(使用 driveId
来自 remoteItem.parentReference
和 remoteItem.Id
中的 id
。