проблемы с загрузкой файла xslx в теле почтового запроса в приложение ядра .net на aws-lambda - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь отправить запрос с почтальоном на наш сервер AWS-Lambda.Позвольте мне сначала заявить, что при запуске веб-сервера на моем ноутбуке с использованием отладчика Visual studio все работает нормально.При попытке сделать то же самое, но по URL-адресу AWS-Lambda, я получаю следующие ошибки при переходе через ведение журнала:

при загрузке обычного файла xlsx (его размер 593 КБ)

Split or spanned archives are not supported. 

При загрузке того же файла, но с удалением нескольких листов (потому что я подумал, что, возможно, размер слишком велик, что должно быть bs, но давайте попробуем):

Number of entries expected in End Of Central Directory does not correspond to number of entries in Central Directory.

при загрузкеслучайный файл xlsx:

Offset to Central Directory cannot be held in an Int64.

Я не знаю, что происходит, это может быть связано с тем, как почтальон сериализует файл xlsx и как мой сеанс отладки (вкл.Windows-машина) десериализует его, что отличается от способа десериализации AWS-Lambda, но это только полная догадка.

Я всегда получаю ответ 400 - Bad Request

Я нахожусь напотеря и я надеюсь, что кто-то здесь знает, что делать.

Это метод в моем контроллере, однако проблема возникает до этого:

    [HttpPost("productmodel")]
    public async Task<IActionResult> SeedProductModel()
    {
        try
        {
            _logger.LogInformation("Starting seed product model");
            var memoryStream = new MemoryStream();
            _logger.LogInformation($"request body: {Request.Body}");
            Request.Body.CopyTo(memoryStream);
            var command = new SeedProductModelCommand(memoryStream);
            var result = await _mediator.Send(command);

            if (!result.Success)
            {
                return BadRequest(result.MissingProducts);
            }

            return Ok();
        }
        catch (Exception ex)
        {
            _logger.LogError(ex.Message);
            return BadRequest();
        }
    }

почтальон: enter image description here

enter image description here

мы не используем API-ключи для нашей тестовой среды

1 Ответ

1 голос
/ 19 марта 2019

Поскольку вы загружаете двоичный контент в API Gateway, вам необходимо включить его через консоль.

Перейдите в API Gateway -> выберите API -> Настройки -> Бинарные типы носителей -> application / octet-поток, как на изображении ниже

enter image description here

Сохраните его и обязательно переустановите API, иначе ваши изменения не будут иметь эффекта.

Для этого выберите API -> Действия -> Развернуть API

enter image description here

...