繁体   English   中英

在内部TFS 2015 Update3中使用C#中的REST API获取团队项目的列表

[英]Get a list of team projects using REST api in C# for on premise TFS 2015 Update3

我正在尝试使用来自C#的REST api调用并遵循以下MSDN文档来获取所有项目:

https://www.visualstudio.com/zh-CN/docs/integrate/api/tfs/projects

在执行GetTeamProjects()我得到以下响应:

响应{状态代码:404,原因短语:'未找到',版本:1.1,内容:System.Net.Http.StreamContent,标头:

我假设错误可能是由于身份验证类型引起的。 我在内部使用NTLM时通过了Basic。

我正在尝试获取TFS项目以获取用户权限详细信息。

我只是使用此方法而无需启用基本身份验证:

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");

如果您遇到身份验证问题,则应该收到401错误,而不是404错误。我担心您的代码有问题。 您可以在下面参考我的代码:

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());
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM