C# SharePoint item.File-ServerObjectNullReferenceException

C# SharePoint item.File-ServerObjectNullReferenceException,c#,sharepoint,sharepoint-clientobject,C#,Sharepoint,Sharepoint Clientobject,我正在尝试加载列表中所有文件项的信息。在此代码段中,item指的是一个ListItem switch(item.FileSystemObjectType) { case FileSystemObjectType.File: if (ListOptions.IndexFileItems) { ClientContex

我正在尝试加载列表中所有文件项的信息。在此代码段中,
item
指的是一个
ListItem

switch(item.FileSystemObjectType)
            {
                case FileSystemObjectType.File:
                    if (ListOptions.IndexFileItems)
                    {
                        ClientContext.Load(item, i => i.File);
                        ClientContext.ExecuteQuery();
                        if (item.File.Exists)
当代码运行时,它到达最后一行,然后抛出ServerObjectNullReferenceException


我不理解这一点,因为该项在其
FileSystemObjectType
中已声明其自身为
File
类型,我是否应该在加载
File
属性后不期望该属性具有引用?是否加载的文件不正确?

ListItem.file在文档库中使用,请确保列表对象是库:

我测试了下面的代码片段,按预期工作:

            ClientContext ctx = new ClientContext("http://sp/sites/dev/");
            List list = ctx.Web.Lists.GetByTitle("dccc");
            CamlQuery caml = new CamlQuery();
            ListItemCollection items = list.GetItems(caml);
            ctx.Load(items);
            ctx.ExecuteQuery();
            foreach (ListItem item in items)
            {

                switch (item.FileSystemObjectType)
                {
                    case FileSystemObjectType.File:
                        ctx.Load(item, i => i.File);
                        ctx.ExecuteQuery();
                        if (item.File.Exists)
                        {
                            Console.WriteLine(item.File.Name);
                        }
                        break;
                }
            }

因此,这些文件是两个jpg文件:


谢谢。我想我需要选中前面提到的list.BaseTemplate。我现在想知道,由于我的CamlQuery是递归的,子列表对它们的父列表是否可以有不同的类型。