我使用Microsoft.VisualStudio.Services.Client
连接到具有不同证书的TFS/VSTS以更新工作项目。TFS REST API .NET客户端TFS2017个人访问令牌:“您必须在请求的主体中传递有效的修补程序文档。”
的情况下,当我连接到TFS2017的前提和使用个人访问令牌(PAT),工作项肌酸更新失败:
必须在请求主体传递一个有效的补丁文件。
尽管所有GET请求都能正常工作。
如果我连接到VSTS(即使使用PAT),以及使用NTLM凭证连接到TFS2017时,也可以使用相同的场景。
使用Fiddler检查它,问题似乎是,对于这种情况,TFS2017会为每个请求发送一个验证质询(对于VSTS,它只发送第一个请求,然后传入会话ID)。
.NET客户端发送正确的修补程序文档作为第一个POST/PATCH请求的内容,但它在响应身份验证质询时不再包括该内容。所以第二个请求的内容是空的,这会触发“您必须在请求的正文中传递有效的补丁文档”。最后。
我有不同的认证方式尝试过,但它是所有相同,GET请求工作(所以AUTH作品一般),但更新不:
new VssBasicCredential(string.Empty, pat)
new VssCredentials(new WindowsCredential(new NetworkCredential(string.Empty, pat)))
我认为它适用于VSTS,因为只有第一个(GET)请求存在身份验证质询,而不是稍后POST/PATCH请求。
任何有关如何让这种情况下工作的提示?
Thx!我的工具在非交互式会话中运行,因此不能通过浏览器窗口进行登录。也许我的问题也与我之前没有考虑的http vs https有关。但我需要设置一个测试环境来确保。 –
我希望你能用这个: https://docs.microsoft。COM/EN-US/VSTS /集成/ GET-开始/ REST /样本 – weiky