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

调用Azure DevOps REST API更新工作项状态返回400错误

Azure DevOps 工作项更新接口返回400错误排查

你的代码存在4个会直接触发400错误的问题,逐个修复即可:

  • C#字符串语法错误:你直接在普通双引号字符串内写多行、嵌套双引号的JSON内容,没有做任何转义,实际运行时生成的字符串是语法损坏的,发出去的请求体根本不是合法JSON。不要手写JSON字符串,优先用JSON序列化库生成请求内容。
  • PATCH操作符使用错误:更新工作项已存在的内置字段(System.State/System.Reason/System.History均为内置字段)时,op参数需要用replace,add仅用于添加之前不存在的字段值或者向集合类字段追加元素,操作符不匹配会直接被接口参数校验拦截。
  • /rev字段值类型错误:工作项版本号rev是整数类型,你传了字符串格式的"4",类型不满足接口要求,必须传不带引号的数值类型。
  • Content-Type设置错误:Azure DevOps的JSON PATCH接口要求请求的Content-Type必须是application/json-patch+json,你当前设置的普通application/json不会被接口识别为合法的PATCH请求格式。

修正后的可运行代码示例

using System.Net.Http;
using System.Text;
using System.Text.Json;

// 构造PATCH请求体,用序列化方式生成JSON避免语法错误
var patchOperations = new object[]
{
    new
    {
        op = "test",
        path = "/rev",
        value = 4 // rev为整数类型,不要加引号转成字符串
    },
    new
    {
        op = "replace", // 已有字段更新用replace操作
        path = "/fields/System.State",
        value = "Blocked"
    },
    new
    {
        op = "replace",
        path = "/fields/System.Reason",
        value = "State changed as part of PWR planning"
    },
    new
    {
        op = "replace",
        path = "/fields/System.History",
        value = "State changed as part of PWR planning"
    }
};

string requestJson = JsonSerializer.Serialize(patchOperations);
// 必须指定正确的Content-Type为json-patch格式
var requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json-patch+json");
HttpResponseMessage response = await HttpClient.PatchAsync(
    $"/{Org}/_apis/wit/workitems/{ID}?api-version=6.0", 
    requestContent);

// 调试时如果仍有报错,读取响应内容即可拿到明确的错误提示,比如状态流转不合法、Reason值不匹配等
// string errorDetail = await response.Content.ReadAsStringAsync();

额外说明:如果修复以上问题后仍返回400,直接读取响应正文即可拿到具体错误原因,常见的额外报错原因包括:目标状态Blocked不在当前工作项类型的允许流转状态列表、System.Reason的值和目标状态不匹配、传入的rev值和工作项当前最新版本不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:24:29