C# 如何使用C获取身份验证令牌以获取VSO工作项

C# 如何使用C获取身份验证令牌以获取VSO工作项,c#,visual-studio,azure-devops,azure-devops-rest-api,C#,Visual Studio,Azure Devops,Azure Devops Rest Api,我需要使用C Rest API调用获取VSO工作项。 我无法确定如何获取http请求的令牌。 下面是我所拥有的。有人能给我代码来获取令牌以向VSO进行身份验证吗 您需要在Azure DevOps门户中生成令牌: 在Azure DevOps中登录到您的组织 从主页打开用户设置,然后选择个人访问令牌 然后选择+新令牌 命名令牌,选择要使用令牌的组织,然后选择令牌的寿命 选择此令牌的作用域以授权您的特定任务 例如,要创建令牌以使生成和发布代理能够对Azure DevOps服务进行身份验证,请将令牌的作

我需要使用C Rest API调用获取VSO工作项。 我无法确定如何获取http请求的令牌。 下面是我所拥有的。有人能给我代码来获取令牌以向VSO进行身份验证吗


您需要在Azure DevOps门户中生成令牌:

在Azure DevOps中登录到您的组织

从主页打开用户设置,然后选择个人访问令牌

然后选择+新令牌

命名令牌,选择要使用令牌的组织,然后选择令牌的寿命

选择此令牌的作用域以授权您的特定任务

例如,要创建令牌以使生成和发布代理能够对Azure DevOps服务进行身份验证,请将令牌的作用域限制为代理池读取和管理。要读取审核日志事件并管理和删除流,请选择“读取审核日志”,然后选择“创建”

完成后,请确保复制令牌。为了您的安全,它不会再次显示。使用此令牌作为您的密码。 创建PAT后,您可以在Azure DevOps中需要用户凭据进行身份验证的任何位置使用它


查看更多信息。

要将PAT令牌传递给C HTTP头,需要将其转换为Base64字符串

string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", "PAT")));

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
以下是一个例子:

       ...

        {
            string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", "PAT")));
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri($"https://dev.azure.com/{OrganizationName}");  //url of your organization
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);

                //connect to the REST endpoint            
                HttpResponseMessage response = client.GetAsync("/ProjectName/_apis/wit/workitems/467?api-version=6.0").Result;

                //check to see if we have a successful response
                if (response.IsSuccessStatusCode)
                {
                    var value = response.Content.ReadAsStringAsync().Result;
                    Console.WriteLine(value);
                    Console.ReadLine();
                }


            }
        }

有关更多详细信息,请参阅或。

我已经有了您提供的链接。我需要密码来获取令牌。嗨@Vinny。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是想提醒一下。我有一个PAT代币。我试图在上面的代码中传递它。我没有得到任何有效的结果我的Http Rest API调用需要修整吗?
       ...

        {
            string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", "PAT")));
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri($"https://dev.azure.com/{OrganizationName}");  //url of your organization
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);

                //connect to the REST endpoint            
                HttpResponseMessage response = client.GetAsync("/ProjectName/_apis/wit/workitems/467?api-version=6.0").Result;

                //check to see if we have a successful response
                if (response.IsSuccessStatusCode)
                {
                    var value = response.Content.ReadAsStringAsync().Result;
                    Console.WriteLine(value);
                    Console.ReadLine();
                }


            }
        }