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

如何通过编程方式获取Azure DevOps中的当前Sprint

问题原因

你碰到的203状态码是请求缺少Azure DevOps身份认证凭证导致的:浏览器访问时因为你已经提前登录过DevOps站点,请求会自动带上有效的身份Cookie,因此可以正常拿到结果;而你写的代码里直接初始化了HttpClient,没有附带任何认证信息,就会被DevOps的鉴权层拦截返回203。

解决步骤

1. 生成个人访问令牌(PAT)

  • 打开Azure DevOps站点,点击右上角用户头像,选择「个人访问令牌」
  • 新建令牌,按需设置过期时间,权限勾选「工作项读取」及迭代相关的读取权限,生成后保存令牌字符串(仅会显示一次,请注意备份)

2. 修正C#代码,添加认证头

Azure DevOps的API认证使用Basic方案,认证头构造规则为:用户名填任意非空值,密码为你生成的PAT,将用户名:PAT的字符串做Base64编码后放到Authorization头即可。
修正后代码示例:

using System.Net.Http.Headers;
using System.Text;

// 注意:HttpClient建议全局单例使用,避免频繁创建导致套接字资源浪费
HttpClient client = new HttpClient();

// 替换为你自己生成的PAT
string personalAccessToken = "你生成的个人访问令牌";
string authInfo = Convert.ToBase64String(Encoding.ASCII.GetBytes($"user:{personalAccessToken}"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authInfo);

Uri url = new Uri("https://abcd.visualstudio.com/myproject/_apis/work/teamsettings/iterations?$timeframe=current&api-version=5.1");
HttpResponseMessage response = await client.GetAsync(url);

if (response.IsSuccessStatusCode)
{
    string content = await response.Content.ReadAsStringAsync();
    // 此处处理返回的迭代信息JSON即可
}
额外注意事项
  • 如果你的DevOps组织开启了第三方应用访问限制,需要确认生成PAT的账号有对应接口的访问权限
  • 如果你要获取指定团队的迭代,需要在请求URL里补全团队路径,否则默认返回项目默认团队的迭代数据
  • PAT权限按需分配即可,不要授予不必要的全权限,避免令牌泄露后带来安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:39:02