2017-01-16 5 views
2

나머지 API 및 powershell을 사용하여 TFS 2017 온 - 프레미스 서버에서 팀과 관련된 영역을 설정하려고합니다. 내 URI를 호출 할 때TFS 팀의 영역을 설정할 때 매개 변수 'patch'에 대한 ArgumentNullException

로 JSON 패키지로 API example 설명

http://MyTfsServer:8080/tfs/DefaultCollection/TeamProject/TeamName/_apis/Work/TeamSettings/TeamFieldValues?api-version=2.0-preview.1

, 나는 다음과 같은 오류 반환받을 :

 
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 
        } 
       ] 

} 

업데이트

나는 $setTeamAreaPathUri 위의 HTTP URI에 해당하는 파워 쉘의 호출-RestMethod cmdlet을

 
Invoke-RestMethod -Method Patch -Uri $setTeamAreaPathUri -UseDefaultCredentials -Body $json -ContentType "application/json" 

와 URI 위를 호출하고 있습니다. 패치가 아닌 웹 요청 방법으로 post을 사용해야합니까?

get 요청을 사용하여 동일한 URI에서 응답을 완벽하게받을 수 있습니다. 그러나 수없는이 :-(패치 방법을 사용하여 기존의 팀 영역을 변경하는

업데이트 2

이 스칸디나비아 문자 'æøå'지역 경로에 포함 된 관련 같다. 나는 모든을 제외하는 경우 æ, ø 또는 å을 포함하는 영역 경로, 오류가 발생하지 않습니다. 내 예제에서 확실하지 않았습니다 ... 죄송합니다! json에서 구문 분석하여 TFS 서버가 중단되지 않는 방법이 있습니까? 또는 PowerShell 나머지 API 호출에 능숙하지 않아서 나입니까?

+0

invoke-webrequest 코드를 게시 해주십시오. ? Json은 유효하지만 파싱이 다르게 보입니다. –

+0

API 예 링크는 https://www.visualstudio.com/en-us/docs/integrate/api/work/team-field-values#update-team-field-values가 아니어야합니다. https : //www.visualstudio .com/en-us/docs/integrate/api/work/team-settings # update-a-teams- 팀의 설정을 업데이트하는 설정입니다. –

+0

문제를 재현 할 수 없습니다. 휴식 APi 및 JSON 시체를 테스트하기 위해 우편 배달부와 같은 일부 휴식 클라이언트를 사용해 보셨습니까?또한'Area2 \\ Area21 \\ Area211' 대신'\\ Area2'를 시도하십시오 –

답변

3

이것은 모두 특수 문자가 포함 된 영역 경로와 관련이있는 것 같습니다. æ, ø, å는 스칸디나비아에서 주로 사용됩니다.

-ContentType "application/json;charset=utf-8"

로-restmethod 호출 호출 할 때 내 콘텐츠 형식을 지정하면 내가 그렇게 이제까지 API의 패치 메소드를 호출 무슨 문제가 없습니다.

불편을 끼쳐 드려 죄송합니다.

그리고 도와 주셔서 감사합니다.

+0

공유 해 주셔서 감사합니다. 할 수 있으면 대답으로 표시 할 수 있습니다. 이 사이트의 다른 사용자에게 도움이됩니다. –

0

패치 문제가 발생하여이 문제가 재현되지 않습니다. api를 테스트하기 위해 우편 배달부와 함께 해보셨습니까? 또한 기본값은 팀의 허용 된 팀 필드 값 중 하나 여야합니다.