MultipartReader: Unexpected end of Stream, the content may have already been read by another component

Всем привет, столкнулся с такой проблемой что при чтении данных с помощью MultipartReader всегда получаю исключение и программа падает, вот с такой ошибкой: Unexpected end of Stream, the content may have already been read by another component. Помогите пожалуйста найти ошибку.

Вот как я отправляю, основа была взята из документации майкрософта:

using (HttpClient client = new HttpClient())
{
    foreach (string file in files)
    {
        string mainServerUrl = $"http://localhost:8080/api/send/{sessionId}";

        Console.WriteLine("mainServerUrl = " + mainServerUrl);

        long fileSize = new FileInfo(file).Length;
        Console.WriteLine($"Размер файла {Path.GetFileName(file)}: {fileSize} байт");

        // Cоздаем MultipartFormDataContent
        using var multipartFormContent = new MultipartFormDataContent();
        // Загружаем отправляемый файл
        using var fileStream = File.OpenRead(file); // Открываем файл для чтения
        var fileStreamContent = new StreamContent(fileStream);
        // Устанавливаем заголовок Content-Type
        fileStreamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        // Добавляем загруженный файл в MultipartFormDataContent
        multipartFormContent.Add(fileStreamContent, name: "binary", fileName: Path.GetFileName(file));

        long multipartSize = await GetMultipartFormDataContentLengthAsync(multipartFormContent);
        Console.WriteLine($"Размер содержимого MultipartFormDataContent: {multipartSize} байт");

        HttpResponseMessage response = await client.PostAsync(mainServerUrl, multipartFormContent);

        if (response.IsSuccessStatusCode)
        {
            Console.WriteLine($"Файл {Path.GetFileName(file)} успешно отправлен на основной сервер");
        }
        else
        {
            Console.WriteLine($"Не удалось отправить файл {Path.GetFileName(file)} на основной сервер. Код состояния: {response.StatusCode}");
        }
    }
}

Принимаю так:

Console.WriteLine("Заголовки запроса:");
foreach (var key in request.Headers.AllKeys)
{
    Console.WriteLine($"{key}: {request.Headers[key]}");
}

try
{
    if (request.HasEntityBody)
    {
        Console.WriteLine("Request имеет тело сущности.");
        var boundary = GetBoundary_1(request.ContentType);
        if (boundary == null)
        {
            Console.WriteLine("Boundary is null.");
            throw new InvalidOperationException("Boundary is null.");
        }
        Console.WriteLine("Boundary: " + boundary);

        using (Stream requestStream = request.InputStream)
        {
            MultipartReader reader = new MultipartReader(boundary, requestStream);
            MultipartSection section = null;

            try
            {
                if (!requestStream.CanRead)
                {
                    Console.WriteLine("InputStream не может быть прочитан.");
                    throw new InvalidOperationException("InputStream не может быть прочитан.");
                }

                Console.WriteLine("Чтение следующего раздела.");
                section = await reader.ReadNextSectionAsync();
                Console.WriteLine("Первый раздел прочитан.");

                while (section  != null)
                {
                    Console.WriteLine("Обработка раздела.");
                    string contentDisposition = section.Headers["Content-Disposition"];
                    string fileName = GetFileName(contentDisposition);
                    Console.WriteLine("Файл: " + fileName);
                    string filePath = Path.Combine("data", sessionId, fileName);

                    Directory.CreateDirectory(Path.GetDirectoryName(filePath));

                    using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                    {
                        await section.Body.CopyToAsync(fileStream);
                    }

                        Console.WriteLine($"Файл сохранен: {filePath}");
                        section = await reader.ReadNextSectionAsync();
                        Console.WriteLine("Следующий раздел прочитан.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Ошибка при чтении следующего раздела: " + ex.Message);
                Console.WriteLine("Стек исключения: " + ex.StackTrace);

                if (ex.InnerException != null)
                {
                    Console.WriteLine("Внутреннее исключение: " + ex.InnerException.Message);
                    Console.WriteLine("Стек внутреннего исключения: " + ex.InnerException.StackTrace);
                }

                throw;
            }
        }     
    }
    else
    {
        Console.WriteLine("Запрос не имеет тела сущности.");
    }
}
catch (Exception e)
{
    Console.WriteLine("Ошибка: " + e.Message);
    Console.WriteLine("Стек исключения: " + e.StackTrace);
}

Ответы (0 шт):