Я пытаюсь загрузить файл xlsx и прочитать его, проблема в том, что я изменил запрос, через который отправляю его. Теперь я получаю сообщение об ошибке:
Split or spanned archives are not supported.
[Error] Product.Presentation.Controllers.DatabaseController: at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory()
at System.IO.Compression.ZipArchive.Init(Stream stream, ZipArchiveMode mode, Boolean leaveOpen)
at System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode, Boolean leaveOpen, Encoding entryNameEncoding)
at ExcelDataReader.Core.ZipWorker..ctor(Stream fileStream)
at ExcelDataReader.ExcelOpenXmlReader..ctor(Stream stream)
at ExcelDataReader.ExcelReaderFactory.CreateReader(Stream fileStream, ExcelReaderConfiguration configuration)
at Product.Business.Handlers.SeedProductModelHandler.Handle(SeedProductModelCommand request, CancellationToken cancellationToken) in /home/vsts/work/1/s/src/Services/Product API/10 Business/Product.Business.Handlers/SeedProductModelHandler.cs:line 39
at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at Product.Presentation.Controllers.DatabaseController.SeedProductModel() in /home/vsts/work/1/s/src/Services/Product API/00 Presentation/Product.Presentation.Controllers/DatabaseController.cs:line 102
Проблема в том, что я получаю эту ошибку на нашем сервере (AWS lambda), но нет на моей локальной машине, поэтому ее очень трудно отладить. Я думаю, что это как-то связано с заголовками, но я не уверен.
текущий запрос выглядит так:
Раньше было так:
In the new instance i'm using the Content-Type header: multipart/form-data
In the old instance i'm using the Content-Type header: application/octet-stream
Текущий код:
var version = Request.Form["version"];
var changedBy = Request.Form["changedBy"];
var formFile = Request.Form.Files.FirstOrDefault();
var command = new SeedProductModelCommand(formFile.OpenReadStream(), version, changedBy);
var result = await _mediator.Send(command);
В трассировке стека указано, что это является причиной ошибки (первая строка кода SeedProductModelCommand
метод обработки).
using (var reader = ExcelReaderFactory.CreateReader(request.ProductModelStream))