Ошибка службы, размещенной в Azure. «При отправке запроса произошла ошибка» - PullRequest
0 голосов
/ 23 сентября 2019

Мы начали получать сообщение об ошибке с одной из наших ASP.NET Web API служб, размещенных в Служба приложений Azure .Сервис позволяет размещать изображения (в виде сериализованных байтовых массивов) на нашем сервере.Эта служба работала без проблем уже более года, но неожиданно начала выводить следующую ошибку.

Возникло исключение PostInspectionImagesTests: System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка.---> System.Net.WebException: базовое соединение было закрыто: при получении произошла непредвиденная ошибка.---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом

Вот код, который отправляет запрос.

private static async Task<HttpResponseMessage> PostData(string url, HttpContent content, string token)
{
    RoutingTasksPostDeploymentTests.Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(RoutingTasksPostDeploymentTests.Subscriber, token);
    return await RoutingTasksPostDeploymentTests.Client.PostAsync(new Uri(url), content);
}

Мыиспользуйте статический экземпляр класса HttpClient , так как это более эффективно.

Вот код, который я использую для создания тестовых изображений.

private static byte[] GetImage(int imageSize)
{
    var randBytes = new byte[imageSize];
    System.Security.Cryptography.RNGCryptoServiceProvider rand = 
        new System.Security.Cryptography.RNGCryptoServiceProvider();
    rand.GetBytes(randBytes);
    return randBytes;
}

Я могу публиковать изображения размером <1 МБ, но когда я получаю> 1 МБ, я получаю сообщение об ошибке.Этот сервис работает уже более года.За это время не было никаких изменений в этом сервисе.

Ошибка возникает как на моем компьютере для разработки, так и на нашем локальном сервере сборки TFS.Я не могу понять, является ли это проблемой с нашей стороны (с нашей сетью / брандмауэром) или с Azure.Я пробовал с разными таймаутами на HTTP-клиенте и установкой значений для размеров контента / запроса в app.config.

Ни одно из этих значений никак не повлияло.

<system.web>
    <httpRuntime maxRequestLength="2097151" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="2147483647" />
      </requestFiltering>
    </security>
  </system.webServer>

Я получаю ошибку HTTP 504 (время ожидания шлюза) при просмотре запросав скрипач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...