我正在尝试升级旧的 AWS Lambda ASP.NET Core WebApi 项目,但在 AWS 上运行时失败。
该项目曾经使用包含以下行的
LocalEntryPoint.cs
文件:
var lambdaEntry = new LambdaEntryPoint();
var functionHandler = lambdaEntry.FunctionHandlerAsync;
LambdaBootstrapBuilder.Create<APIGatewayProxyRequest>(functionHandler, new DefaultLambdaJsonSerializer(x =>
{
x.PropertyNameCaseInsensitive = true;
x.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
}))
.Build()
.RunAsync().Wait();
这个方法似乎不再起作用了,我将其替换为包含
Program.cs file
的
builder.Services.AddAWSLambdaHosting(LambdaEventSource.ApplicationLoadBalancer);
然而,当在 AWS 上运行该项目时,我在每个事件中都会遇到此错误:
Amazon.Lambda.Serialization.SystemTextJson.JsonSerializerException:将 Lambda 事件 JSON 负载转换为 Amazon.Lambda.ApplicationLoadBalancerEvents.ApplicationLoadBalancerRequest 类型时出错:反序列化没有无参数构造函数、单一参数化构造函数或用“JsonConstructorAttribute”注释的参数化构造函数的类型不支持。输入“Amazon.Lambda.ApplicationLoadBalancerEvents.ApplicationLoadBalancerRequest”。
据我了解,这些事件被锁定在 AWS Nuget 库后面,因此我无法编辑它们。
当我发布这篇文章时,我发现出了什么问题。如果有人遇到问题,请将答案留在这里:
我们的构建管道仍在使用 .net 6。将其升级到 .net 8 后,它现在可以工作了