json - 为 TFS 团队设置区域时参数 'patch' 出现 ArgumentNullException

标签 json powershell rest tfs

我正在尝试使用 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/

相关文章:

powershell - Windows 10 PowerShell Get-WindowsCapability 和 Add-WindowsCapability 命令出错

REST - 使用单个 POST 创建嵌套资源

java - 如何使用 mailjet 的 Rest Java API 发送新闻通讯?

java - JMeter 根据先前的响应创建 HTTP 请求正文

android - 尝试从 json 字符串获取 json 数组或 json 对象时出现 nullpointerexception

asp.net - 多环境.NET Core

javascript - 如何从 JSON 解析 HTML 数据并将其呈现在 UIWebView 中(使用 Swift 3.0)

regex - PowerShell Try 语句缺少其 Catch 或 finally block

regex - Powershell正则表达式

javascript - ajax成功后如何修改json数据?