【发布时间】:2021-04-22 16:09:10
【问题描述】:
我正在尝试使用 Azure API 添加工作任务,但我不断收到 404 错误。我试图做一个获取所有项目并且这工作(所以我的身份验证令牌工作正常)。我什至授予了令牌的所有 Azure 权限,但它仍然返回 404 错误。
public class Main
{
public static void Main(string[] args)
{
AzureClient ac = new AzureClient();
var task = ac.AddTask();
}
}
public class AzureClient
{
private readonly HttpClient _client;
public AzureClient()
{
_client = new HttpClient()
{
Timeout = TimeSpan.FromSeconds(30)
};
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// ADDED PAT HERE TO CLIENT
}
public async Task AddTask()
{
List<object> task = new List<object>
{
new { op = "add", path = "/fields/System.Title", value = "Test"}
};
string jsonTask = JsonConvert.SerializeObject(task);
string baseUri = "some base uri";
string uri = $"{baseUri}/_apis/wit/workitems/$Task?api-version=5.0";
// RESPONSE HERE RETURNS 404
var response = _client.PostAsync(uri, new StringContent(jsonTask, Encoding.UTF8, "application/json-patch+json")).Result;
}
}
【问题讨论】:
-
baseUri变量设置为什么?查看uri变量并确保它是正确的。此外,您应该await调用PostAsync以避免死锁。 -
@DanielMann 我将修复异步部分,谢谢。我可以确认的基本 uri 有效,因为我测试了以下 url,它返回了我的组织“baseUri/_apis/projects?api-version=5.0”下的项目列表
-
REST API URI 需要包含项目名称或 ID。正如我所说,查看
uri变量。不要假设它是正确的。将该 URI 与 REST API 文档进行比较。 -
您的目标是本地 Azure DevOps 服务器/TFS,还是面向 Azure DevOps?如果你的目标是 Azure DevOps,我强烈建议使用最新的 REST API 版本,即 6.1。除此之外,除非您愿意提供您尝试访问的确切 URI,否则任何人都无法为您提供更多指导。 404 错误意味着您没有为其提供 API 的有效 URI。
-
等一下。如果您在本地,那么您如何使用
dev.azure.com?那是行不通的。您没有提供完整的图片,这将使您很难为您提供帮助。请使用您正在使用的 exact URI 更新您的问题。出于隐私考虑,请随意编辑一些内容。还包括您正在使用的 TFS/Azure DevOps Server 的 版本。
标签: c# azure-devops azure-devops-rest-api