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

使用MS Cognitive Face API创建PersonGroup时请求体无效报错求助

解决Azure Face API创建PersonGroup时的BadArgument错误

嘿,我来帮你搞定这个BadArgument错误!你收到的"Request body is invalid"提示很明确——问题出在请求体的格式或者必填字段缺失上,结合Azure Face API(原MS Cognitive Face API)的要求,咱们一步步来修正:

核心问题分析

创建PersonGroup的API要求必须传入包含name字段的JSON请求体,userData是可选字段。从你给出的代码片段来看,MakeRequest方法里没有构造请求体的逻辑,这大概率是导致错误的根本原因。另外还要确认请求方法是不是用了POST(而不是你代码里变量名暗示的GET)。

修正后的完整代码示例

下面是补全后的正确实现,你可以参考调整:

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json; // 需要安装Newtonsoft.Json NuGet包,或者用System.Text.Json替代

public async Task<dynamic> CREATEPERSONGROUP() 
{ 
    var response = await MakeRequest(); 
    return Json(data: response); 
} 

static async Task<string> MakeRequest() 
{ 
    using (var client = new HttpClient())
    {
        // 1. 配置API密钥和区域端点
        string apiKey = "你的Azure Face API密钥";
        string region = "你的资源所在区域(比如eastus、westeurope)";
        client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", apiKey);

        // 2. 定义PersonGroup的唯一ID(1-64字符,仅允许字母、数字、'-'、'_')
        string personGroupId = "my-test-person-group-001";
        string requestUri = $"https://{region}.api.cognitive.microsoft.com/face/v1.0/persongroups/{personGroupId}";

        // 3. 构造符合要求的请求体
        var personGroupPayload = new {
            name = "我的测试人员组", // 必填字段,不能为空
            userData = "用于测试的人员组,包含家人信息" // 可选字段,可省略
        };
        string jsonBody = JsonConvert.SerializeObject(personGroupPayload);
        var content = new StringContent(jsonBody, Encoding.UTF8, "application/json");

        // 4. 发送POST请求(必须用POST,不能用GET)
        HttpResponseMessage response = await client.PostAsync(requestUri, content);
        
        // 5. 处理响应
        if (response.IsSuccessStatusCode)
        {
            return "PersonGroup创建成功!";
        }
        else
        {
            // 获取详细错误信息,方便进一步排查
            string errorDetails = await response.Content.ReadAsStringAsync();
            return $"创建失败:{errorDetails}";
        }
    }
}

关键注意事项

  • 必填字段不能少:name是API强制要求的,不能为空字符串。
  • 请求方法必须是POST:创建资源要用POST,GET是用来查询资源的,用错方法也会导致请求体无效的错误。
  • API密钥和区域要匹配:确保你的密钥和端点区域对应,比如资源在eastus,就用eastus.api.cognitive.microsoft.com。
  • PersonGroupID格式要合规:不能包含特殊字符,长度控制在1-64之间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:48:20