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

使用RestSharp调用SharePoint API创建文件夹时遇BadRequest错误

SharePoint REST API 创建文件夹报错:__metadata 属性不存在的解决方法

问题描述

基于.NET 6开发控制台应用,使用RestSharp调用SharePoint REST API创建文件夹时,收到BadRequest响应,错误信息:

"The property '__metadata' does not exist on type 'SP.Folder'. Make sure to only use property names that are defined by the type"

已在请求头指定Accept和Content-Type为application/json;odata=verbose,但问题仍未解决。

问题根源

RestSharp的AddJsonBody方法会自动覆盖请求的Content-Type头为application/json,而非你手动设置的application/json;odata=verbose。这导致SharePoint API未按OData Verbose模式解析请求体,因此无法识别__metadata属性。

解决方案

放弃使用AddJsonBody,改为手动序列化请求体为JSON字符串,并通过AddParameter方法指定正确的内容类型:

修改后的代码

using System.Text.Json;

// ... 其他代码 ...

var request = new RestRequest
{
    Resource = $"{RESOURCE}/_api/web/folders",
    Method = Method.Post
};

request.AddHeaders(new List<KeyValuePair<string, string>>
{
    new KeyValuePair<string, string>("Authorization", $"Bearer {_accessToken}"),
    new KeyValuePair<string, string>("Accept", "application/json;odata=verbose"),
    new KeyValuePair<string, string>("Content-Type", "application/json;odata=verbose")
});

// 手动序列化请求体
var folderPayload = new
{
    __metadata = new
    {
        type = "SP.Folder"
    },
    ServerRelativeUrl = $"ContainedFolder/{FolderName}"
};
var jsonPayload = JsonSerializer.Serialize(folderPayload);

// 添加请求体并指定正确的内容类型
request.AddParameter("application/json;odata=verbose", jsonPayload, ParameterType.RequestBody);

var response = await _client.ExecuteAsync(request);

if (response == null || response.StatusCode != expectedStatus)
    throw new Exception($"Unable to create folder. StatusCode: {response?.StatusCode}. Error: {response?.ErrorMessage}. RawContent: {response?.Content}");

return response;

额外检查点

  • 确认RESOURCE为SharePoint站点的完整根URL(例如https://yourtenant.sharepoint.com/sites/yoursite)
  • 确认ServerRelativeUrl是正确的服务器相对路径,需包含站点路径(例如站点为/sites/yoursite时,路径应为/sites/yoursite/ContainedFolder/{FolderName})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:50:16