【发布时间】:2022-09-23 05:29:45
【问题描述】:
我有一个非常简单的 ASP.NET 6.0 Web API 应用程序,带有一个带有一个 Get 方法返回文本的 Home 控制器:
[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 类;该功能移至隐式 Program 类。所以在我的LambdaEntryPoint 类(继承自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 类唯一不同的是我必须在底部添加public partial class Program { },这样单元测试才能找到Program 并运行。
我的测试事件如下所示:
{
\"resource\": \"/Home\",
\"path\": \"/Home\",
\"httpMethod\": \"GET\",
\"isBase64Encoded\": true
}
它是默认Amazon API Gateway AWS Proxy 的精简版
标签: c# amazon-web-services asp.net-web-api aws-lambda