Запрос FormData имеет тайм-аут тела ответа - PullRequest
0 голосов
/ 06 ноября 2018

Я пишу тест в Node.Js, который выполняет FormData запрос на бэкэнд-сервис .NET Core. Я делаю это, используя пакет NPM form-data для создания экземпляра FormData и node-fetch для выполнения фактического запроса.

Мой запрос содержит один текстовый файл, который я хочу отправить на сервер:

const path = "c:/path/to/my/file.txt";
const file = { fileName: path.basename(path), data: fs.createReadStream(path) };
content.append("file", file.data, file.fileName);

Сервер отвечает очень странной ошибкой, которую я никогда раньше не видел:

Reading the request body timed out due to data arriving too slowly. See MinRequestBodyDataRate.

BadHttpRequestException
   at Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw(RequestRejectionReason reason)
      at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1MessageBody.PumpAsync()
      at System.IO.Pipelines.PipeCompletion.ThrowLatchedException()
      at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
      at System.IO.Pipelines.Pipe.GetReadAsyncResult()
      at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.ReadAsync(Memory`1 buffer, CancellationToken cancellationToken)
      at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream.ReadAsyncInternal(Memory`1 buffer, CancellationToken cancellationToken)
      at Microsoft.AspNetCore.WebUtilities.BufferedReadStream.EnsureBufferedAsync(Int32 minCount, CancellationToken cancellationToken)
      at Microsoft.AspNetCore.WebUtilities.MultipartReaderStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
      at Microsoft.AspNetCore.WebUtilities.FileBufferingReadStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
      at Microsoft.AspNetCore.WebUtilities.StreamHelperExtensions.DrainAsync(Stream stream, ArrayPool`1 bytePool, Nullable`1 limit, CancellationToken cancellationToken)
      at Microsoft.AspNetCore.Http.Features.FormFeature.InnerReadFormAsync(CancellationToken cancellationToken)
      at Microsoft.AspNetCore.Mvc.ModelBinding.FormValueProviderFactory.AddValueProviderAsync(ValueProviderFactoryContext context)
      at Microsoft.AspNetCore.Mvc.ModelBinding.CompositeValueProvider.CreateAsync(ActionContext actionContext, IList`1 factories)
      at Microsoft.AspNetCore.Mvc.ModelBinding.CompositeValueProvider.CreateAsync(ControllerContext controllerContext)
      at Microsoft.AspNetCore.Mvc.Internal.ControllerBinderDelegateProvider.<>c__DisplayClass0_0.<<CreateBinderDelegate>g__Bind|0>d.MoveNext()
   --- End of stack trace from previous location where exception was thrown ---
      at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
      at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()

Система работает локально, и я проверил сеть, сервер доступен и другие операции работают. Также запрос представляется действительным . В свойстве body есть данные.

enter image description here

Признаюсь, я не так много знаю о FormData, поэтому, возможно, я что-то упускаю из запроса.

Спасибо за вашу помощь!

...