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

使用GraphServiceClient创建SharePoint列表时遭遇编译错误与运行时无效请求问题

使用GraphServiceClient创建SharePoint列表时遭遇编译错误与运行时无效请求问题

嘿,我正好碰到过类似的坑,来给你捋捋怎么解决!

首先说编译错误的事儿:你参考的代码里写的List = new ListInfo之所以报错,是因为当前你用的Microsoft Graph SDK版本里,Microsoft.Graph.Models.List这个类根本没有名为List的属性——大概率是文档没跟上SDK的更新节奏。Quickfix给的ListProp虽然能让编译器闭嘴,但这又会引发新的问题。

为啥用ListProp运行时会报无效请求呢?因为Graph API的创建列表接口期望接收的是名为list的字段,但SDK会把ListProp这个属性序列化成listProp,API根本识别不了这个字段,自然就返回无效请求了;而你删掉这个字段的话,API因为没收到必填的列表模板信息,同样会报错。

那正确的写法得看你用的SDK版本:

如果你用的是Graph SDK v5及以上,直接把代码里的List = new ListInfo改成ListInfo = new ListInfo就行,这个属性名在SDK里会被正确序列化成API需要的list字段。修改后的完整代码大概是这样:

// Dependencies
using Microsoft.Graph.Models;

var requestBody = new List
{
    DisplayName = "Books",
    Columns = new List<ColumnDefinition>
    {
        new ColumnDefinition
        {
            Name = "Author",
            Text = new TextColumn(),
        },
        new ColumnDefinition
        {
            Name = "PageCount",
            Number = new NumberColumn(),
        },
    },
    ListInfo = new ListInfo
    {
        Template = "genericList",
    },
};

var result = await graphClient.Sites["{site-id}"].Lists.PostAsync(requestBody);

要是你还在使用Graph SDK v4,更推荐直接升级到v5版本——毕竟新版本的命名更直观,也能避开这种属性名不匹配的坑;要是暂时没法升级,可以试试手动指定属性的序列化名称,确保SDK能输出API识别的list字段。

我自己之前就是因为没注意SDK版本差,踩了一模一样的坑,改完属性名之后就正常运行了,你可以试试!

备注:内容来源于stack exchange,提问作者Roest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:44:33