【问题标题】:Cannot create listitem via rest api in sharepoint2013 with contribute rights无法通过具有贡献者权限的 sharepoint 2013 中的 rest api 创建列表项
【发布时间】:2015-09-04 04:17:00
【问题描述】:

我对基于 SharePoint 2013 的旅行工具有疑问。

此工具包含不同的内容类型 - 所有内容类型都在其特定列表中(旅行请求、乘坐火车、航班等)。有两个主要群体正在使用此工具:员工(贡献)和管理人员(完全控制)。 在 homepage.aspx 上,我们有一个带有自定义 HomePageNewItem 按钮和旅行请求的 ListView 的 ScriptEditorWebpart。当用户点击自定义按钮时,会通过 REST API 创建一个新的 ListItem,并显示当前创建的 ListItem 的 EditForm.aspx。

有什么问题?

这对管理人员来说效果很好(完全控制)。当员工尝试创建 ListItem 时,会出现以下错误消息:HRESULT: 0x80131904(从 REST API 返回)。当员工访问某些列表时,也会发生同样的情况。 ListView 不显示,但有同样的错误信息。

一些附加信息

  • SQL 数据库的所有分区都有足够的存储空间
  • 当员工使用标准的“新项目”按钮时,一切 工作得很好(ListView 除外)
  • 当员工移动到管理人员组时,所有 工作得很好
  • 所有列表都设置了正确的权限
  • 这在一周前有效,并且在 代码,只有网站的一些自定义,例如主页.aspx)

其他提示

这可能与网站定义有关吗?

创建列表项的函数

 function createListItem(listName, newItem, success) {
    var itemType = getItemTypeForListName(listName);
        newItem.__metadata = { "type": itemType }

        $.ajax({
            url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/items",
            type: "POST",
            contentType: "application/json;odata=verbose",
            data: JSON.stringify(newItem),
            headers: {
                "Accept": "application/json;odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },
            success: function (data) {
                success(data);
            },
            error: function (data) {
                var errorMessage = JSON.parse(data.responseText).error.message.value;
                var statusId;

                statusId = SP.UI.Status.addStatus("Hoppla:", errorMessage);
                SP.UI.Status.setStatusPriColor(statusId, "Blue");
                setTimeout(function () { SP.UI.Status.removeStatus(statusId); },10000);
            }
        });
    }

function getItemTypeForListName(name) {
        return "SP.Data." + name.charAt(0).toUpperCase() + name.split(" ").join("").slice(1) + "ListItem";
    }

提前致谢 本杰明

【问题讨论】:

    标签: sql rest listview sharepoint hresult


    【解决方案1】:

    检查列表中的项目数。如果列表中有超过 5000 个项目(又名。Threshold Limit),则使用 REST 可能会收到类似的错误,或者可能会出现一系列问题 您可以尝试以下步骤之一来了解确切原因:

    1. 查看 ULS 日志以获取更详细的错误消息。
    2. 尝试关闭列表的限制。使用 PowerShell 将 SPList 的属性 EnableThrottling 设置为 $false
    3. 有时可能会出现其他限制问题。尝试增加 Web 应用程序的限制。比如增加列表的最大查找列数。转到 Central Admin -> Web Applications -> Resource Throttling 并增加限制。
    4. 删除一些用于测试的字段。尝试删除一些字段,尤其是查找、用户或日期字段。
    5. 更改您的 REST 查询并从列表中仅获取一项或几项。

    试试这样的:

    "/_api/web/lists/getbytitle('" + listName + "')/items?$top=5" 
    

    "/_api/web/lists/getbytitle('" + listName + "')/items(1)",
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      相关资源
      最近更新 更多