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

Azure DevOps PAT调用SDK拉取工作项返回203但直接请求正常的原因?

第一段代码的疏漏点
  • PAT赋值错误:你定义personal_access_token时多写了前置冒号,值为:XXXX,但BasicAuthentication('', 你的PAT)的内部逻辑会自动将空用户名与PAT拼接为{用户名}:{PAT}的格式再做Base64编码,额外加的冒号会导致最终拼接结果为::XXXX,生成的认证凭证完全错误。
  • 独立requests请求未携带认证信息:你前面初始化的Azure DevOps Python库连接、凭证对象,和最后调用的requests.get没有任何关联,你没有给这个GET请求传入任何auth参数或者认证头,请求自然没有携带有效身份信息,返回203响应属于预期结果。
原生requests生效、Azure Python库看起来不生效的原因

Azure官方提供的DevOps Python库本身逻辑没有问题,你之前测试时感知到“库不生效”完全是错误用法导致的:

  1. 你给库传入的PAT本身带了多余的冒号,导致初始化的凭证是无效的,哪怕你用库本身的客户端发起请求也会认证失败,你代码里调用core_client.get_projects()后没有做错误判断,没有发现这一步本身就已经认证失败了,误以为是库的能力有问题。
  2. 你测试库效果时用了独立的requests请求,没有用到库封装的请求能力,相当于库的初始化完全是无效代码,自然拿不到正确结果。

如果你修正PAT的冒号问题,直接用库提供的客户端就能完成工作项查询,不需要自己拼接URL、处理认证逻辑,示例逻辑如下:

from azure.devops.connection import Connection
from msrest.authentication import BasicAuthentication

PE_DEVOPS_NAME = "DevOpsArea"
personal_access_token = 'XXXX' # 去掉前置冒号
organization_url = 'https://dev.azure.com/organization/'

credentials = BasicAuthentication('', personal_access_token)
connection = Connection(base_url=organization_url, creds=credentials)

# 直接拿工作项跟踪客户端
wit_client = connection.clients.get_work_item_tracking_client()
# 调用方法查询指定ID的工作项
work_item = wit_client.get_work_item(id=60814, project=PE_DEVOPS_NAME)
print(work_item.fields)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:48:03