Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将post请求正文中的xslx文件上载到aws lambda上的.net core应用程序时出现问题_Excel_Amazon Web Services_.net Core_Aws Lambda_Postman - Fatal编程技术网

Excel 将post请求正文中的xslx文件上载到aws lambda上的.net core应用程序时出现问题

Excel 将post请求正文中的xslx文件上载到aws lambda上的.net core应用程序时出现问题,excel,amazon-web-services,.net-core,aws-lambda,postman,Excel,Amazon Web Services,.net Core,Aws Lambda,Postman,我正试图通过邮递员向我们的AWS Lambda服务器发送一个post请求。首先让我声明,当使用VisualStudio调试器在我的笔记本电脑上运行web服务器时,一切正常。当尝试执行完全相同的操作时,但在AWS Lambda的url中,我在切换日志记录时会出现以下错误: 上载普通xlsx文件时(大小为593kb) 上载同一个文件时,删除了一些工作表(因为我认为可能大小太大,应该是bs,但让我们试试): 上载随机xlsx文件时: 到中心目录的偏移量不能保存在Int64中。 我不知道发生了什么,这可

我正试图通过邮递员向我们的AWS Lambda服务器发送一个post请求。首先让我声明,当使用VisualStudio调试器在我的笔记本电脑上运行web服务器时,一切正常。当尝试执行完全相同的操作时,但在AWS Lambda的url中,我在切换日志记录时会出现以下错误:

上载普通xlsx文件时(大小为593kb)

上载同一个文件时,删除了一些工作表(因为我认为可能大小太大,应该是bs,但让我们试试):

上载随机xlsx文件时:

到中心目录的偏移量不能保存在Int64中。

我不知道发生了什么,这可能与postman序列化xlsx文件的方式以及我的调试会话(在windows机器上)反序列化它的方式有关,这与AWS Lambda反序列化它的方式不同,但这只是一个完全的猜测

我总是收到400个错误的请求响应

我不知所措,希望这里有人知道该怎么办

这是我的控制器中的方法,但在此之前出现问题:

    [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();
        }
    }
[HttpPost(“产品模型”)]
公共异步任务SeedProductModel()
{
尝试
{
_logger.LogInformation(“启动种子产品模型”);
var memoryStream=新的memoryStream();
_logger.LogInformation($“请求主体:{request.body}”);
请求.Body.CopyTo(memoryStream);
var命令=新的SeedProductModelCommand(memoryStream);
var result=wait\u mediator.Send(命令);
如果(!result.Success)
{
返回不良请求(结果丢失产品);
}
返回Ok();
}
捕获(例外情况除外)
{
_logger.LogError(例如消息);
返回请求();
}
}
邮递员:


我们的测试环境不使用api密钥

因为您正在将二进制内容上载到api网关,所以需要通过控制台启用它

转到API网关->选择您的API->设置->二进制媒体类型->应用程序/八位字节流,如下图所示

保存它并确保重新部署API,否则更改将无效

为此,请选择API->Actions->DeployAPI


您是否介意共享一些代码?您是否已将API网关配置为接受应用程序/八位字节流?否则它将无法工作转到API Gatweway->选择您的API->设置->二进制媒体类型->添加应用程序/八位字节流问题是,当您添加二进制类型时,API网关有点奇怪。我以前也遇到过这种情况,结果我不得不重新部署API。如果不部署,则不需要保存。尝试添加应用程序/八位字节流并重新部署API。这就是API网关的工作方式。Jup就是这样,我们必须重新部署API,如果你创建一个答案,我将接受它,非常感谢!
Number of entries expected in End Of Central Directory does not correspond to number of entries in Central Directory.
    [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();
        }
    }