我正在尝试使用其余API和PowerShell在TFS 2017内部部署服务器上设置与团队关联的区域。
当我尝试调用我的URI时
如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我真的可以使用som指导我应该寻找什么。我已经验证了我的Json包,它应该是格式良好的。
{ "defaultValue": "TeamProject\\Area1", "Values": [ { "value": "Area2\\Area21\\Area211", "includeChildren": false }, { "value": "Area3\\Area31\\Area311", "includeChildren": false } ] }
更新
我正在使用powershell Invoke-RestMethod cmdlet
调用上面的URIInvoke-RestMethod -Method Patch -Uri $setTeamAreaPathUri -UseDefaultCredentials -Body $json -ContentType "application/json"
$setTeamAreaPathUri
对应上述http URI。我应该使用post
作为我的webrequest方法而不是补丁吗?
我完全能够使用get请求从同一URI获得响应。但是,无法使用补丁方法更改现有团队区域: - (
更新2
这似乎与斯堪的纳维亚角色'æøå'被包含在区域路径中有关。如果我排除包括æ,ø或å的所有区域路径,我没有错误。从我的例子来看,这并不明显......对不起! 有没有办法解析json所以TFS服务器不会破坏它?或者这是因为我缺乏PowerShell rest api调用的经验?
答案 0 :(得分:3)
看来这与包含特殊字符的区域路径有关,例如æ,ø,å主要用于斯堪的纳维亚半岛。
如果我在调用invoke-restmethod
时指定了我的内容类型 -ContentType "application/json;charset=utf-8"
我对调用API的补丁方法没有任何问题。
很抱歉给您带来不便!
谢谢你的帮助!
答案 1 :(得分:0)
我也不能重复这个问题。这似乎是因为补丁对象为空而发生的。你可以和邮递员一起试试这个api吗?此外,默认值应该是团队允许的团队字段值之一。