SharePoint CSOM无法初始化ServerRelativePath
本文关键字:初始化 ServerRelativePath CSOM SharePoint | 更新日期: 2023-09-27 18:01:55
大家好,
我正在使用c#和SharePoint CSOM为SharePoint Online工作。我的代码处理特定库中的文件,其中循环遍历File object的集合:文件xFile在ParentFolder.Files) {....
我无法初始化ServerRelativePath属性。
foreach (Microsoft.SharePoint.Client.File xFile in ParentFolder.Files)
{
Console.WriteLine(xFile.Name);
//xFile.Context.Load(zzzzzz);
xFile.Context.Load(xFile.ListItemAllFields);
xFile.Context.Load(xFile.ModifiedBy);
xFile.Context.ExecuteQuery();
Console.WriteLine(xFile.ServerRelativePath); //Error here
More code ...
}
我得到的错误是正常的"属性或字段'ServerRelativePath'尚未初始化…"
但是,我无法将任何东西加载到允许我通过此错误的上下文中。
我错过了什么?
多谢克里斯托夫
我找到了解决方案:
第一个错误是试图在错误的位置加载相对路径。在原始帖子中的代码中,我尝试在处理特定文件时加载该属性。
似乎正确的地方是与之前的上下文加载,我实际上得到的文件集合循环。
ParentFolder.Context.Load(ParentFolder);
ParentFolder.Context.Load(ParentFolder.Folders);
ParentFolder.Context.Load(ParentFolder.Files);
I was missing this >>>> ParentFolder.Context.Load(ParentFolder.Files, items => items.Include(item => item.ServerRelativePath));
ParentFolder.Context.ExecuteQuery();
所以正确的代码是这样的:
ParentFolder.Context.Load(ParentFolder);
ParentFolder.Context.Load(ParentFolder.Folders);
ParentFolder.Context.Load(ParentFolder.Files);
ParentFolder.Context.Load(ParentFolder.Files, items => items.Include(item => item.ServerRelativePath));
ParentFolder.Context.ExecuteQuery();
if (Applicable business logic){
foreach (Microsoft.SharePoint.Client.File xFile in ParentFolder.Files){
FileCounter++;
Console.WriteLine(xFile.Name + " (" + xFile.ServerRelativePath.DecodedUrl + ")");
xFile.Context.Load(xFile.ListItemAllFields);
xFile.Context.Load(xFile.ModifiedBy);
xFile.Context.ExecuteQuery();
More business logic code relating to the file itself...
} //end if statement
} // end foreach loop