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'尚未初始化…"

但是,我无法将任何东西加载到允许我通过此错误的上下文中。

我错过了什么?

多谢克里斯托夫

SharePoint CSOM无法初始化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