.Net最小API和AWS Lambda反序列化问题



我在运行于AWS Lambda的.Net 6 Minimal API中有以下代码。

在Program.cs:中

app.MapPost("/{id:Guid}/test", TestHandler.Test);

在一个单独的文件中:

public static async Task<IResult> Test(TestEvent testEvent, HttpContext context, IConfiguration configuration){
...
}

我使用test/json得到一个415,或者使用application/json得到一个400。如果我移除POCO:

public static async Task<IResult> Test(HttpContext context, IConfiguration configuration)

我可以在没有任何问题的情况下取消请求正文的名称。

string body = await new StreamReader(context.Request.Body).ReadToEndAsync();
var testEvent = JsonSerializer.Deserialize<TestEvent>(body);

但是无法以任何其他方式使序列化工作,我宁愿不必手动反序列化我的所有POST。这不起作用有什么明显的原因吗?

当我在本地运行API时,反序列化会正常工作,因此它与AWS ApiGateway或Lambda有关。

看起来AWS对JSON做了一些System.Text.JSON.Serialization无法处理的事情。发现以下内容后,我切换到Newtonsoft.Json反序列化程序:https://stackoverflow.com/a/69867815/1663834.

最新更新