Загрузка изображения поля описания DevOps / Сохранение файла - PullRequest
0 голосов
/ 27 января 2020

Поскольку мы перешли на Dev Ops, мое приложение не может загрузить изображения, которые находятся в любом поле, сохраненном в рабочем элементе.

У меня есть URL-адрес изображения, который уже был удален из файлов описания через регулярное выражение.

Если я возьму эту ссылку и вставлю ее в браузер, она вернет изображения (поэтому URL действителен)

Проблема заключается в том, что в вызове для загрузки image У нас нет учетных данных для аутентификации, и он пытается вернуть меня на страницу входа.

Я выполняю аутентификацию на сервере dev ops в моем приложении, и он кэширует их.

readonly VssCredentials creds = new VssClientCredentials();

I Я пытался использовать веб-клиента для выполнения вызова, но вы не можете привести VSScredentuals к системе. net учетные данные

это раньше работало до

using (WebClient webClient = new WebClient())
{
          byte[] data = webClient.DownloadData(src);

          using (MemoryStream mem = new MemoryStream(data))
          {
                using (var yourImage = Image.FromStream(mem))
                {
                 // If you want it as Png
                 yourImage.Save(@"c:\temp\path_to_your_file.png", ImageFormat.Png);

                  // If you want it as Jpeg
                  yourImage.Save(@"c:\temp\path_to_your_file.jpg", ImageFormat.Jpeg);
                }
          }
}

Я пробовал также использовать

using (var client = new TfvcHttpClient(new Uri(src), creds))
{
        var itemRequestData = Create(src);
}

private static TfvcItemRequestData Create(string folderPath)
{
  return new TfvcItemRequestData
  {
    IncludeContentMetadata = true,
    IncludeLinks = true,
    ItemDescriptors =
          new[]
          {
                    new TfvcItemDescriptor
                    {
                        Path = folderPath,
                        RecursionLevel = VersionControlRecursionType.Full
                    }
          }
  };
}

Но как мне тогда записать itemRequestData в файл?

Или я поступаю неправильно?

спасибо

1 Ответ

0 голосов
/ 06 февраля 2020

Попробуйте:

using (WebClient webClient = new WebClient())
{
    webClient.Headers.Add("Authorization", "Basic " + base64Token);
    byte[] data = webClient.DownloadData(src);

    // ....      
}

Где base64Token - ваш токен личного доступа, преобразованный в base64 с ":" в начале.

Например, если ваш токен abcdefg , вам необходимо преобразовать : abcdefg в base64 и использовать его в качестве токена авторизации.

...