我正在尝试使用 REST API 和 Powershell 设置与 TFS 2017 本地服务器上的团队关联的区域。
当我尝试调用我的 URI 时
<a href="http://MyTfsServer:8080/tfs/DefaultCollection/TeamProject/TeamName/_apis/Work/TeamSettings/TeamFieldValues?api-version=2.0-preview.1" rel="noreferrer noopener nofollow">http://MyTfsServer:8080/tfs/DefaultCollection/TeamProject/TeamName/_apis/Work/TeamSettings/TeamFieldValues?api-version=2.0-preview.1</a>
如 API example 中所述使用 json 包时,我得到以下错误返回:
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Value cannot be null. \r\nParameter name: patch","typeName":"System.ArgumentNullException, mscorlib, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "typeKey":"ArgumentNullException","errorCode":0,"eventId":0} + ... $result = Invoke-RestMethod -Method Patch -Uri $setTeamAreaPathUri ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand我真的可以使用一些关于我应该寻找什么的指导。我已经验证了我的 Json 包,它的格式应该正确。
{ "defaultValue": "TeamProject\\Area1", "Values": [ { "value": "Area2\\Area21\\Area211", "includeChildren": false }, { "value": "Area3\\Area31\\Area311", "includeChildren": false } ] }
更新
我使用 powershell Invoke-RestMethod cmdlet 调用上述 URI
Invoke-RestMethod -Method Patch -Uri $setTeamAreaPathUri -UseDefaultCredentials -Body $json -ContentType "application/json"
哪里$setTeamAreaPathUri
对应上面的http URI。我应该使用 post
作为我的网络请求方法而不是补丁?
我完全能够使用 get 请求从同一 URI 获取响应。但是,无法使用补丁方法更改现有的团队区域:-(
更新2
这似乎与区域路径中包含的斯堪的纳维亚字符“æøå”有关。如果我排除所有包含 æ、ø 或 å 的区域路径,则不会出现错误。从我的例子来看这并不明显......抱歉! 有没有办法解析 json,这样 TFS 服务器就不会中断?或者这是因为我不熟悉 powershell Rest api 调用?
最佳答案
看来这都与包含特殊字符的区域路径有关,例如æ,ø,å 主要用于斯堪的纳维亚半岛。
如果我在调用 invoke-restmethod 时将内容类型指定为
-ContentType“application/json;charset=utf-8”
我对调用 API 的 patch 方法没有任何问题。
抱歉给您带来不便!
感谢您的帮助!
关于json - 为 TFS 团队设置区域时参数 'patch' 出现 ArgumentNullException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678963/