繁体   English   中英

ASP.NET AWS 中托管的 Core 6 应用程序 Lambda function URL 处理程序

[英]ASP.NET Core 6 app hosted in AWS Lambda function URL Handler

我有一个 ASP.NET 6 Web 应用程序 (Razor Pages),它是使用 AWS 提供的模板serverless.AspNetCoreWebApp (来自Amazon.Lambda.Templates )创建的,它不使用新的顶级语句方法并构建以下文件:

  • Startup.cs
  • LambdaEntryPoint.cs
  • LocalEntryPoint.cs

我已经使用无服务器框架和应用程序成功地将此应用程序部署到 API 网关后面的 Lambda。 但是,我想改用 API 网关,改用 Lambda URL。 但是,我不确定需要更新什么,特别是在切换到这种新方法时,我将 Lambda Function 的 Handler 属性设置为什么。

我添加了 package Amazon.Lambda.AspNetCoreServer.Hosting并在我的Startup.cs中添加了:

services.AddAWSLambdaHosting(LambdaEventSource.HttpApi);

但是,在成功部署后点击新配置的 Lambda URL 时出现Internal Server Error 我怀疑这纯粹是配置问题。

我在网上看到的所有利用这个新的 Lambda URL 功能的示例都是针对 .NET 项目使用新的顶级语句方法的最小 API 项目; 其中 Lambda Function Handler 属性刚刚设置为项目程序集的名称。 将 Function 处理程序设置为它前面的 API 网关并不能解决问题:

MyApp.Web::MyApp.Web.LambdaEntryPoint::FunctionHandlerAsync

查看提供的LambdaEntryPoint class,其中包括有关根据您的架构(应用程序负载均衡器、API 网关 Rest/HTTP 等)切换基础 class 的指导。似乎没有明显的东西可以切换到使用 Lambda URL方法。

我尝试将 Function 处理程序指向以下内容,但这也没有解决问题。

MyApp.Web::MyApp.Web.LocalEntryPoint::Main 

显然,即使在项目未使用顶级语句功能的情况下,您仍然仅使用程序集名称作为 Lambda 函数的处理程序。

所以在这个例子中,serverless.yml 中的serverless.yml Function Handler 属性应该设置为:

handler: MyApp.Web

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM