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

SharePoint 2013列表getByTitle()失效及Items接口500错误求助

解决SharePoint 2013 REST API获取Items时的500错误(KeyNotFoundException)

遇到这种能获取列表元数据,但访问/Items就抛出500错误+System.Collections.Generic.KeyNotFoundException的情况,大概率是你的SharePoint列表本身存在字段或视图损坏的问题,我来给你一步步排查和解决:

1. 先缩小范围:限制返回字段排查问题

首先,我们先排除是特定字段导致的问题。修改你的AJAX请求,只返回最基础的字段(比如ID和Title):

$.ajax({
    url: url + "/_api/web/lists/getbytitle('" + listname + "')/items?$select=ID,Title&$top="+maxReturnedRows,
    method: "GET",
    async: false,
    headers: { "Accept": "application/json; odata=verbose" },
    success: function (data) {
        listArray = data.d.results;
    },
    error: function (data) {
        alert('Error in AJAX-Call to '+listname);
        failure(data);
    }
});

如果这个请求能成功返回数据,说明默认视图里包含了某个损坏的字段,接下来就可以逐步添加字段到$select里,找到那个导致错误的字段,再针对性修复。

2. 检查列表视图中的无效字段

REST API默认会返回列表默认视图的所有字段,如果视图里存在以下情况的字段,就会触发这个错误:

  • 计算字段的公式引用了已删除的字段,导致显示#NAME?
  • 查找字段关联的目标列表已被删除,或者目标字段不存在
  • 字段已被删除,但仍保留在视图中

排查步骤:

  • 打开列表的设置页面,进入视图设置(默认视图)
  • 检查所有勾选的字段,移除那些看起来异常的字段(比如显示异常的计算字段)
  • 保存视图后,再尝试调用原REST请求,看是否恢复正常

3. 检查列表字段的完整性

如果视图没问题,那可能是列表本身的字段定义损坏了:

  • 调用/_api/web/lists/getbytitle('" + listname + "')/fields查看所有字段的详情
  • 重点检查计算字段的Formula属性、查找字段的LookupList和LookupField属性,看是否有引用不存在的列表或字段
  • 如果发现无效字段,直接删除或者修改其定义(比如修复计算字段的公式)

4. 修复列表内部结构

如果上述方法都没用,可能是列表的内部XML定义损坏了,可以尝试以下两种修复方式:

方式一:通过浏览器修复

访问列表的高级设置页面:http://你的站点地址/_layouts/15/listedit.aspx?List={列表的GUID},随便修改一个无关的设置(比如列表描述),然后保存,这会触发SharePoint重新整理列表的字段和视图定义。

方式二:通过PowerShell修复

打开SharePoint管理Shell,执行以下脚本(替换对应的站点地址和列表名称):

$web = Get-SPWeb "http://你的站点地址"
$list = $web.Lists["你的列表名称"]
$list.Update($true) # 强制更新列表,修复潜在的结构损坏
$web.Dispose()

5. 最后排除权限问题(虽然500不是典型权限错误,但也值得确认)

确保当前用户对列表的项目有读取权限:

  • 进入列表设置的权限级别,检查用户所属的权限组是否包含「查看项目」权限
  • 如果是自定义权限级别,确认没有遗漏项目读取的相关权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:39:16