You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PNP CORE SDK获取列表项文件属性报错:ServerRelativeUrl未加载

错误原因分析
  • 未正确构造加载查询:你的代码仅指定了File的ServerRelativeUrl子属性,但未明确将Item的File属性标记为需要加载的对象,导致PnP Core SDK无法正确加载File实例及其属性。
  • 未触发实际数据加载:PnP Core SDK采用延迟执行机制,直接遍历listCommercial.Items不会发起API请求,必须通过异步方法(如ToListAsync)触发数据获取。
正确实现代码

以下两种写法均可实现等效于你提供的REST API的功能:

写法一:使用QueryProperties嵌套构造查询

var listCommercial = await pnpCoreContextProject.Web.Lists.GetByTitleAsync("Commercial");

// 加载Item的Id,同时加载File的ServerRelativeUrl
var items = await listCommercial.Items
    .QueryProperties(i => new { i.Id, i.File })
    .QueryProperties(i => i.File.QueryProperties(f => f.ServerRelativeUrl))
    .ToListAsync();

foreach (var item in items)
{
    // 避免无附件的Item导致空引用
    if (item.File != null)
    {
        Log(item.File.ServerRelativeUrl);
    }
}

写法二:使用Include简化查询构造

var listCommercial = await pnpCoreContextProject.Web.Lists.GetByTitleAsync("Commercial");

var items = await listCommercial.Items
    .Include(i => i.Id, i => i.File.Include(f => f.ServerRelativeUrl))
    .ToListAsync();

foreach (var item in items)
{
    if (item.File != null)
    {
        Log(item.File.ServerRelativeUrl);
    }
}
关键说明
  • 必须通过await调用异步方法触发API请求,确保数据被实际加载。
  • 访问File属性前建议做空值判断,避免无附件的列表项导致空引用异常。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:41:01