我使用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