Как избежать проблемы с ограничением скорости при извлечении большого количества изображений из URL-адресов графиков MicC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как избежать проблемы с ограничением скорости при извлечении большого количества изображений из URL-адресов графиков Mic

Сообщение Anonymous »

У меня есть веб-приложение, которое отображает сообщения команд из разных каналов в одном месте. Когда пользователь отправляет изображение в чат команды, оно принимается в виде URL-адреса в формате
https://graph.microsoft.com/beta/teams/ ... /hostedCon палатки/aBDhbhfhbLWN1cv/$стоимость /"

Если вы попытаетесь получить доступ к этому URL-адресу, он скажет, что необходима аутентификация, поэтому я обнаруживаю каждый раз, когда пользователь отправляет сообщение, содержащее URL-адреса в этом формате, затем вызовите следующую функцию:

Код: Выделить всё

public async Task GetImageAsBase64(ILogger logger, string url)
{
AuthenticationHelper helper = new AuthenticationHelper(logger);
var token = await helper.GetTokenForAppAsync();

using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
try
{
var imageBytes = await httpClient.GetByteArrayAsync(url);
return Convert.ToBase64String(imageBytes);
}
catch (Exception ex)
{
logger.LogError("Failed to get image as base64 from URL: {0} | ExceptionType={1} | Message={2} | StackTrace={3} | InnerException={4}", url, ex.GetType(), ex.Message, ex.StackTrace, ex.InnerException);
return "";
}
}
}
Этот код в основном работает, но я часто вижу, что изображения не отображаются на веб-странице, и в этих случаях на веб-странице возникает исключение HttpRequestException с кодом состояния 429 (слишком много запросов). линия

Код: Выделить всё

var imageBytes = await httpClient.GetByteArrayAsync(url);
Есть ли лучший способ получить доступ к множеству изображений в чатах различных команд с помощью Microsoft Graph?
Любая помощь приветствуется, спасибо за поддержку!
Я попробовал несколько повторных попыток и увеличил время между вызовами для определенного URL-адреса до 90 секунд. После трех повторных попыток он вернет пустую строку и зарегистрирует ошибку. Некоторые повторные попытки работают, другие нет.

Подробнее здесь: https://stackoverflow.com/questions/787 ... soft-graph
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»