[英]Getting "The inner stream position has changed unexpectedly" in AWS Lambda
[英]Has anyone had any luck getting a .NET 6 REST API project to work in an AWS Lambda?
我有一个非常简单的 ASP.NET 6.0 Web API 应用程序,带有一个 Home Get
方法返回文本:
[ApiController]
[Route("[controller]")]
public class HomeController : Controller
{
// GET
[HttpGet]
public IActionResult Get()
{
return Ok(new { message = "Hello, World!" });
}
}
我已经能够让 ASP.NET 项目 < 6.0 工作,但是使用 .NET 6 我遇到了问题。 不再有Startup
class; 该功能移至隐式Program
class。 所以在我的LambdaEntryPoint
class (继承自APIGatewayProxyFunction
)中,我使用Program
作为启动:
protected override void Init(IWebHostBuilder builder)
{
builder.UseStartup<Program>();
}
从 AWS 控制台手动测试时出现错误: Amazon.Lambda.RuntimeSupport.ExceptionHandling.LambdaValidationException: Unable to load assembly.
我相信我的命名是正确的: MyAssembly::MyAssembly.LambdaEntryPoint::FunctionHandlerAsync
我的Program
class 唯一不同的是我必须在底部添加public partial class Program { }
以便单元测试可以找到Program
并运行。
我的测试事件如下所示:
{
"resource": "/Home",
"path": "/Home",
"httpMethod": "GET",
"isBase64Encoded": true
}
它是默认Amazon API Gateway AWS Proxy
的精简版
The fact that you don't have a Startup class doesn't mean you can't make one, I made a Startup class for my API in .NET 6 and it works fine
您不需要添加 Startup.cs class。 如果您使用 NET6,您唯一需要做的就是在 Program.cs 文件中添加这行代码。
如果您使用的是 rest API 或 API GATEWAY
builder.Services.AddAWSLambdaHosting(LambdaEventSource.RestApi);
这是如果您将 lambda 与 url 一起使用
builder.Services.AddAWSLambdaHosting(LambdaEventSource.HttpApi);
..在aws中,您只需使用项目名称更改处理程序即可。 我的程序集
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.