Ошибка загрузки больших файлов на сервер MinIO

это мой код:

public async Task UploadFile(string bucketName, Stream fileStream, string fileName, long fileSize, string contentType)
{
            bool found = await minioClient.BucketExistsAsync(bucketName);
            if (!found)
            {
                await minioClient.MakeBucketAsync(bucketName);
            }

            // Upload a file to bucket.
            await minioClient.PutObjectAsync(bucketName, fileName, fileStream, fileSize, contentType);
}

куда:

BucketName : "пациенты"

stream : результирующий поток из загрузки на веб-страницу asp.net.

Размер файла: 19589050

тип содержимого: "приложение/pdf"

он отлично работает с самыми маленькими файлами PDF (40 КБ, 100 КБ), но если я пытаюсь загрузить самые большие файлы (например, 20 МБ), у меня есть это исключение:

MinIO API ответил сообщением = Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой ключ и метод подписи.

ТРАССИРОВКИ СТЕКА:

в Minio.MinioClient.ParseError(ответ IRestResponse) в Minio.MinioClient.‹>c.‹.ctor>b__80_0(ответ IRestResponse) в Minio.MinioClient.HandleIfErrorResponse(ответ IRestResponse, обработчики IEnumerable`1, DateTime startTime) в Minio.MinioClient .d__84.MoveNext() --- Прекрасная отслеживание стека с предшествующей позицией голубя и создание статуса --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Minio.MinioClient.d__20.MoveNext() --- Прекрасная отслеживание стека с предшествующей позицией голубя и создание состояния выполнения --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) в системе .Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(задача задачи) в Minio.MinioClient.d__15.MoveNext() --- Прекрасная работа стек имеет прецедентное положение и создается событие --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter .GetResult() в API.Managers.MinIOManager.d__5.MoveNext() в C:\Users\dcalzetta\source\repos\TPO_Web\API\Managers\MinIOManager.cs:riga 43 --- Прекрасная отслеживание стека в прежней позиции dove создает статус --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter.GetResult() в API.Controllers.DocumentController.d__7.MoveNext() в C:\Users\dcalzetta\source\repos\TPO_Web\API\Controllers\DocumentController.cs:riga 288

где я ошибаюсь?

я использую сервер Docker MINIO для области разработки,

docker run -d -p 9000:9000 -v /opt/minio/data:/data --restart if-stopped -e "MINIO_ACCESS_KEY=xxxxxxx" -e "MINIO_SECRET_KEY=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" minio/minio server /data

в моем web.config я увеличил максимальный размер загрузки до 100 МБ,

  <system.web>
    <compilation debug="true" targetFramework="4.6.2" />
    <httpRuntime targetFramework="4.6.1" maxRequestLength="102428" />
  </system.web>

...

  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="102428800" />
      </requestFiltering>
    </security>

person Danilo Calzetta    schedule 23.08.2019    source источник
comment
вы используете post или get?   -  person BugFinder    schedule 23.08.2019
comment
я использую пакет nuget клиента MinIO 3.0.12 для вызова сервера minio   -  person Danilo Calzetta    schedule 23.08.2019


Ответы (1)


Я сам обнаружил проблему. Проблема в версии RestSharp, используемой в моем проекте, я использую последнюю версию 106.6.10, и с этой версией загрузка не удалась. Потом попробовал пошагово откатиться, и с RestSharp до версии 106.4.2 (и ниже) загрузка работает без ошибок!

person Danilo Calzetta    schedule 12.09.2019