CSOM中File对象ID属性的正确初始化与调用方法是什么?
CSOM File对象ID属性正确获取方式
你对File.ListId的判断正确,该属性返回的是文件所属列表/文档库的ID,不是文件本身的唯一标识。
SharePoint CSOM的File对象本身没有独立的ID属性,文件的列表内唯一标识直接复用其关联列表项的ID,你之前调用File.ListItemAllFields["ID"]失败的核心原因是:CSOM默认不会自动加载ListItemAllFields关联属性,必须显式声明加载该属性后才能正常读取字段值。
正确操作流程如下:
- 第一步:获取
File对象时,显式指定需要加载ListItemAllFields属性 - 第二步:执行查询后再读取
ListItemAllFields下的ID字段值
C# 代码示例:
using (ClientContext ctx = new ClientContext("你的站点完整URL")) { // 示例:通过服务器相对路径获取目标文件 File targetFile = ctx.Web.GetFileByServerRelativeUrl("/sites/站点名/文档库名/目标文件.xlsx"); // 关键:显式声明加载File对象的ListItemAllFields属性 ctx.Load(targetFile, f => f.ListItemAllFields); ctx.ExecuteQuery(); // 此时可正常读取文件在所属列表内的唯一ID int fileListInnerId = (int)targetFile.ListItemAllFields["ID"]; }
如果需要跨列表全局唯一的文件标识,可以直接读取File.UniqueId属性,该属性是GUID类型的全局唯一标识,无需加载关联列表项即可获取:
ctx.Load(targetFile, f => f.UniqueId); ctx.ExecuteQuery(); Guid fileGlobalUniqueId = targetFile.UniqueId;
内容的提问来源于stack exchange,提问作者seanrco
相关产品推荐
相关产品推荐

