AWS SDK v4 и S3 GetObject — System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиденC#

Место общения программистов C#
Ответить
Anonymous
 AWS SDK v4 и S3 GetObject — System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиден

Сообщение Anonymous »

Я пытаюсь выяснить источник этой проблемы, поэтому создал небольшой пример приложения на C#. Он использует AWS SDK v4. Он обращается к корзине s3, чтобы получить файл, тот же файл, в цикле. Вот фрагмент:

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

        static void Main(string[] args)
{
string configPath = args[0];
var config = ConfigReader.Read(File.OpenRead(configPath));

var client = new AmazonS3Client(config.AccessKeyId, config.SecretAccessKey, Amazon.RegionEndpoint.GetBySystemName(config.AwsRegion));

var path = "path/to/json/file/component.json";

GetObjectRequest request = new GetObjectRequest
{
BucketName = config.BucketName,
Key = path
};
for (int attempt = 0; attempt < 1000; attempt++)
{
using (var response = client.GetObject(request))
{
Console.WriteLine(attempt);
}
}
}
Однако обычно примерно на 100-й итерации происходит сбой. JSON-файл крошечный, пару КБ. Если я перейду на AWS SDK v3, похоже, все будет работать нормально. Фрагмент ошибки:

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

AmazonS3Client 3221|2025-12-17T15:32:24.514Z|ERROR|An exception of type WebException was handled in ErrorHandler. --> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
Итак, первые 100 раз всё в порядке, потом не получается. Это не воспроизводится каждый раз, и, похоже, это зависит от того, на какой машине я запускаю код (может быть, разница в задержке?)
Машина, которая, кажется, быстрее выполняет итерацию цикла for, чаще выходит из строя на 100-й итерации. Я также заметил, что вызовы GetObject выполняются «медленнее» с каждым сотым вызовом, даже если они успешны.
Есть ли у вас идеи, что может быть причиной этого? Я попробовал использовать TransferUtility, но возникла та же проблема.

Подробнее здесь: https://stackoverflow.com/questions/798 ... connection
Ответить

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

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

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

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

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