2016-07-26 12 views
1

Ich habe einen Powershell-Skript, das dies tut:Wie senden Sie eine Patch-Anfrage von einem C# -Client?

$uri = "$($tfsUri)/$($teamproject)/_apis/build/builds/$($buildID)?api-version=2.0" 
    $data = @{keepForever = $keepForever} | ConvertTo-Json 
    $response = $webclient.UploadString($uri,"PATCH", $data) 

Ich versuche, dies in C# neu zu schreiben, einen Webclient verwenden.

WebClient client = new WebClient(); 
client.Encoding = System.Text.Encoding.UTF8; 
string reply = client.UploadString(url, "keepForever = true"); 
Console.WriteLine(reply); 

Aber ich bekomme: Der Remote-Server hat einen Fehler zurückgegeben: (401) Nicht autorisiert.

Dies ist TFS 2015 VNext, wenn das hilft.

Antwort

3

Sie vermissen die METHODE in Ihrem Anruf zu UploadString.

string reply = client.UploadString(url, "keepForever = true"); 

sollte sein:

string reply = client.UploadString(url, "PATCH", "keepForever = true"); 

A 401 nicht autorisiert ist, so auch wenn es ein Schritt in Ihrer Powershell vor, wo Sie in oder Verbinden einer Sitzung anmelden, würden Sie replizieren müssen, dass in deinem C#.

1

Um eine PATCH-Anfrage zu senden, können Sie WebClient.UploadData verwenden.

string data = "keepForever = true"; 
WebClient client = new WebClient(); 
client.Encoding = System.Text.Encoding.UTF8; 
string reply = client.UploadData(url, "PATCH", System.Text.Encoding.UTF8.GetBytes(data)); 
Console.WriteLine(reply);