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

调用MS GraphServiceClient新增SharePoint事件列表项报无效参数错误

问题根因

触发无效参数错误的核心原因有两个:

  • 你传入的日期字符串使用了长破折号(–,Unicode 编码 U+2013)作为年月日连接符,不符合接口要求的半角短横(-,Unicode 编码 U+002D)规范,直接导致日期解析失败。
  • SharePoint 事件列表的日期字段要求传入带时区标识的 ISO 8601 格式时间值,你当前传入的时间字符串没有时区信息,服务端无法判定时间所属时区,也会触发参数校验不通过。
  • 额外注意:你当前使用的"Start Time"、"End Time"是列表字段的显示名,如果站点管理员修改过字段显示名,会导致字段匹配失败,更稳妥的方式是使用字段的固定内部名,事件列表默认的开始时间内部名为EventDate,结束时间内部名为EndDate。
修复代码

将日期部分替换为标准格式即可,参考如下修正后的ListItem构造逻辑:

_scopes = new[] { "https://graph.microsoft.com/.default" };

// using Azure.Identity;
var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};

var clientSecretCredential = new ClientSecretCredential(
    _graphSettings.TenantId, _graphSettings.ClientId, _graphSettings.ClientSecret, options);

_graphClient = new GraphServiceClient(clientSecretCredential, _scopes);


var listItem = new ListItem
{
    Fields = new FieldValueSet
    {
        AdditionalData = new Dictionary<string, object>()
        {
            {"Title", "MS Graph API Test"},
            {"Description", "Proof of Concept Test"},
            {"Location", "East Club" },
            // 替换为半角短横,末尾加Z表示UTC时间,若使用本地时间可替换为对应时区偏移,例如东八区写为2022-06-28T09:00:00+08:00
            {"Start Time", "2022-06-28T09:00:00Z" },
            {"End Time", "2022-06-28T15:00:00Z" }
            // 若使用内部字段名(不受显示名修改影响,稳定性更高)可替换为以下写法
            // {"EventDate", "2022-06-28T09:00:00Z" },
            // {"EndDate", "2022-06-28T15:00:00Z" }
        }
    }
};

await _graphClient.Sites["{_graphSettings.SharepointSiteId}"].Lists["{_graphSettings.EventListId}"].Items
    .Request()
    .AddAsync(listItem);
排查技巧

如果修改后仍报错,可以先只传Title、时间字段这三个必填项,排除其他可选字段的格式干扰,逐个加回字段定位具体异常参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:18:14