使用Mock Lambda Test Tool测试.NET 7 NativeAOT Lambda函数报错
解决.NET 7 NativeAOT Lambda本地Mock测试问题
选项选择说明
- Test Function:仅适用于传统.NET Lambda项目(通过反射调用Handler方法),NativeAOT编译后移除了反射元数据,无法通过该模式调用,这就是你遇到
System.ArgumentException的原因。 - Executable Assembly:这是NativeAOT Lambda的正确测试选项,直接运行编译后的可执行文件,无需反射。
解决「Executable Assembly」无反应的问题
1. 确保已编译NativeAOT可执行文件
在项目目录执行编译命令(适配Linux环境):
dotnet publish -c Release -r linux-x64
编译完成后,可执行文件位于bin/Release/net7.0/linux-x64/publish/目录下(文件名与项目名一致)。
2. 修正测试输入格式
你当前的输入{"Id": "test"}是请求Body的内容,但Lambda Handler接收的是APIGatewayHttpApiV2ProxyRequest对象,需要传入完整的请求结构:
{ "Body": "{\"Id\": \"test\"}", "RequestContext": { "Http": { "Method": "POST" } } }
注意:Body字段需要是JSON字符串(转义后的),因为APIGateway请求的Body本身就是序列化后的字符串。
3. 配置并运行测试
- 在Mock Lambda Test Tool中选择「Executable Assembly」,点击「Browse」指定编译后的可执行文件路径。
- 将修正后的测试输入填入输入框,点击「Execute」。
- 切换到「Logs」标签页查看Lambda执行日志和返回结果。
额外调试技巧
如果工具仍无反应,可直接在终端运行可执行文件验证:
cd bin/Release/net7.0/linux-x64/publish/ ./DocGenerator
然后粘贴完整的APIGateway请求JSON,按Ctrl+D结束输入,查看终端输出是否正常,排除工具本身的问题。
内容的提问来源于stack exchange,提问作者TrinaE
相关产品推荐
相关产品推荐

