Azure Devops个人访问令牌(PAT)停止工作

时间:2019-04-11 06:22:37

标签: c# api azure-devops azure-devops-rest-api

我能够很好地使用Azure Devops RestAPI,但是代码突然停止了工作(甚至与Azure Devops在其文档中提供的示例相同)。

我试图撤消现有的PAT并生成新的PAT,但仍然没有效果。

public static async void PrintBuilds()
{
       try
       {
           var personalaccesstoken = "PAT";

           using (HttpClient 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}", "", personalaccesstoken))));

               using (HttpResponseMessage response = client.GetAsync(
                    "https://dev.azure.com/{Organization}/{Projcet}/_apis/build/builds?api-version=5.0").Result)
               {
                    esponse.EnsureSuccessStatusCode();
                   string responseBody = await response.Content.ReadAsStringAsync();
                   Console.WriteLine(responseBody);
               }
           }
       }
       catch (Exception ex)
       {
           Console.WriteLine(ex.ToString());
       }
}

我希望获得JSON输出,但是我会收到HTTP状态302,即重定向到visualstudio.com登录页面-这可能表明我的PAT有问题...

1 个答案:

答案 0 :(得分:0)

此代码建议您不要将用户名传递给auth标头,而应该这样做,这是我的powershell代码如下:

$pat = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("user@domain:$token"))