使用 TFS 2015 REST API 进行队列构建的 409 冲突响应

Posted

技术标签:

【中文标题】使用 TFS 2015 REST API 进行队列构建的 409 冲突响应【英文标题】:409 conflict response using TFS 2015 REST API to queue build 【发布时间】:2017-05-12 15:07:32 【问题描述】:

我有一个应用程序,它封装了与 TFS REST API 的交互,以便对构建进行排队。该应用程序只是将所需的 json 发送到 API,它工作了几个月,直到它突然开始返回 409 - 冲突。

System.Net.WebException:远程服务器返回错误:(409)冲突。 (https://tfs2015/tfs/spf/SPF/_apis/build/builds?api-version=2.0:"definition":"id":190,"parameters":"")

w3.org 将 http 代码 409 定义为:

由于与资源的当前状态冲突,请求无法完成。仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许使用此代码。响应正文应该包含足够的信息让用户识别冲突的来源。理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题;但是,这可能是不可能的,也不是必需的。

409 也不会消失 - 简单的重试始终失败。即使是重新启动构建服务器的整个“您是否尝试过重新打开它”的方法也无济于事。

【问题讨论】:

【参考方案1】:

事实证明,这里的“冲突”实际上并不是某种奇怪的并发问题,而是无法满足构建需求的状态。

基本上,排队的构建定义需要“PowerShell = 4”。在构建服务器更新到 PowerShell 5 后,构建立即开始提供 409。

在这种情况下,409 意味着池中的任何构建代理都无法满足构建需求。

将构建定义更改为需要 PowerShell 而不是特定版本的 PowerShell 解决了该问题。

(如果我的应用程序将整个响应转储到控制台,我可以更快地解决这个问题,所以我会在不久的将来更新它)。

【讨论】:

请帮我解决这个问题。 ***.com/questions/57578652/…

以上是关于使用 TFS 2015 REST API 进行队列构建的 409 冲突响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# REST API 从 TFS 获取用户身份

TFS(2015)REST服务

如何使用 REST API 在 PowerShell 中获取 TFS 构建报告 [重复]

尝试通过使用rest api从TFS票证中读取缺陷历史来获取TFS错误状态更改日期

将TFS REST API与存储的查询一起使用时是否会编译?

通过 REST API 将测试结果发布到 TFS 2018 测试用例