You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 WebAPI部署AWS Lambda时控制器构造失败排查

问题解决:.NET 6 WebAPI部署AWS Lambda报MissingMethodException错误

核心原因

你当前的Lambda配置和使用的Amazon.AspNetCoreLambda.Hosting托管模式冲突了:

  • AddAWSLambdaHosting是用来把整个ASP.NET Core WebAPI应用托管到Lambda的模式,此时Lambda会作为Web服务器处理HTTP请求,遵循WebAPI的路由和依赖注入规则。
  • 但你设置的HandlerExample::Example.Controllers.WeatherForecastController::Get是Lambda的传统单函数模式,这种模式下Lambda运行时会尝试直接实例化控制器类,而你的控制器依赖ILogger<WeatherForecastController>,没有无参构造函数,所以触发MissingMethodException。

解决步骤

  1. 修正Lambda的Handler配置
    将Handler改为指向程序的入口点:

    Example::Example.Program::Main
    

    如果你用了.NET 6的顶级语句(即Program.cs里没有显式的Program类和Main方法),也可以直接填程序集名称Example,Lambda运行时会自动识别入口点。

  2. 确认部署包构建正确
    用以下命令生成发布包,确保包含所有依赖:

    dotnet publish -c Release -o ./publish
    

    然后将publish目录下的所有文件打包成zip上传到Lambda。

  3. 关联正确的事件源
    因为你用了LambdaEventSource.HttpApi,需要将Lambda与AWS Http API(不是REST API)关联,通过Http API的端点来访问你的WebAPI接口,而不是直接在Lambda控制台测试单个控制器方法。

额外说明

  • 如果想使用Lambda单函数模式(直接调用控制器方法),需要移除AddAWSLambdaHosting配置,并且给控制器添加无参构造函数(但不推荐,会破坏依赖注入),或者改用Lambda函数类来处理请求。
  • 推荐使用ASP.NET Core托管模式,这样可以保留WebAPI的所有特性(路由、依赖注入、中间件等),和本地开发体验一致。

内容的提问来源于stack exchange,提问作者numberjak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:42:38