2017-03-06 1 views
0

Ich versuche, die Projekte alle zu bekommen mit REST-API-Aufruf von C# und im Anschluss an die folgenden MSDN-Dokumentation:Hier finden Sie eine Liste der Teamprojekte REST-API in C# für On-Premise-TFS 2015 Update3

https://www.visualstudio.com/en-us/docs/integrate/api/tfs/projects

Während die GetTeamProjects() Ausführung erhalte ich die folgende Antwort:

Antwort {Statuscode: 404, ReasonPhrase: 'Nicht gefunden', Version: 1.1, Inhalt: System.Net.Http.StreamContent, Header:

Ich gehe davon aus, dass der Fehler möglicherweise auf den Authentifizierungstyp zurückzuführen ist. Ich versetze Basic, während mein on premise NTLM verwendet.

Ich versuche, die TFS-Projekte die Benutzerberechtigungsdetails zu erhalten.

Antwort

0

Wenn Sie Authentifizierungsproblem haben, sollten Sie 401 Fehler, nicht 404. Ich habe Angst, dass etwas mit Ihrem Code nicht stimmt. Sie können unter meinem Code verweisen:

using System; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Threading.Tasks; 

namespace GetTeamProjectREST 
{ 
    class Program 
    { 
     public static void Main() 
     { 
      Task t = GetTeamProjectREST(); 
      Task.WaitAll(new Task[] { t}); 
     } 
     private static async Task GetTeamProjectREST() 
     { 
      try 
      { 
       var username = "domain\\username"; 
       var password = "password"; 

       using (var client = new HttpClient()) 
       { 
        client.DefaultRequestHeaders.Accept.Add(
         new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", 
         Convert.ToBase64String(
          System.Text.ASCIIEncoding.ASCII.GetBytes(
           string.Format("{0}:{1}", username, password)))); 

        using (HttpResponseMessage response = client.GetAsync(
           "http://tfsserver:8080/tfs/teamprojectCollection/_apis/projects?api-version=2.2").Result) 
        { 
         response.EnsureSuccessStatusCode(); 
         string responseBody = await response.Content.ReadAsStringAsync(); 
         Console.WriteLine(responseBody); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.ToString()); 
      } 
     } 
    } 
} 
+0

Ihre obige Code gibt mir die folgende Liste: Antwort \t {Statuscode: 401, ReasonPhrase : 'Unauthorized', Version: 1.1, Inhalt: System.Net.Http.StreamContent – Angshuman

+1

Sie müssen die Standardauthentifizierung im IIS auf Ihrem TFS-Computer aktivieren. –

+0

ist es möglich, es mit NTLM zu tun, anstatt basic .. nicht sicher, ob es eine richtige Frage ist. – Angshuman

1

ich dies nur ohne die Notwendigkeit verwenden, um Standardauthentifizierung zu aktivieren:

var client = new WebClient(); 
client.Credentials = new NetworkCredential("user", "password", "domain"); 
var response = client.DownloadString("http://tfsserver:8080/tfs/teamprojectCollection/_apis/projects?api-version=2.2"); 
Verwandte Themen