[英]ASP.NET Web API works locally but returning SqlException error on AWS Lambda
我正在嘗試在 aws lambda 上托管 Web API。 API 連接到 AWS RDS 上的數據庫。 數據庫確實正確存儲和提供數據。 問題是,當我在本地運行 API 時,它確實從數據庫中正確返回了數據,但是在將其部署到 lambda 之后,它返回了這個錯誤:
錯誤類型:SqlException
它沒有進一步解釋錯誤,我是 AWS 新手,所以我對如何解決這個錯誤一無所知,我嘗試在 AWS Api Gateway 上運行它,我得到了:
響應標頭:
{ "Content-Type":[""],"ErrorType":["SqlException"],"X-Amzn-Trace-Id":["Root=1-62d2052c-c1250f296445a5f4aa4daded;Sampled=0"]}
日志:
Execution log for request 9a72a4d9-d4a0-4a54-913a-4bfc8e0e8ef6
Sat Jul 16 00:24:12 UTC 2022 : Starting execution for request: 9a72a4d9-d4a0-4a54-913a-4bfc8e0e8ef6
Sat Jul 16 00:24:12 UTC 2022 : HTTP Method: GET, Resource Path: /api/Tutors
Sat Jul 16 00:24:12 UTC 2022 : Method request path: {proxy=api/Tutors}
Sat Jul 16 00:24:12 UTC 2022 : Method request query string: {}
Sat Jul 16 00:24:12 UTC 2022 : Method request headers: {}
Sat Jul 16 00:24:12 UTC 2022 : Method request body before transformations:
Sat Jul 16 00:24:12 UTC 2022 : Endpoint request URI: https://lambda.us-east-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-east-1:204758858648:function:TutorMeAPI-AspNetCoreFunction-feH0JQ7qc1x8/invocations
Sat Jul 16 00:24:12 UTC 2022 : Endpoint request headers: {X-Amz-Date=20220716T002412Z, x-amzn-apigateway-api-id=ls9fcxi4k1, Accept=application/json, User-Agent=AmazonAPIGateway_ls9fcxi4k1, Host=lambda.us-east-1.amazonaws.com, X-Amz-Content-Sha256=cc12d58899f939a039dd7463ba42b4d9f8e4646a3e0e42e4cce39c3b1649c782, X-Amzn-Trace-Id=Root=1-62d2052c-c1250f296445a5f4aa4daded, x-amzn-lambda-integration-tag=9a72a4d9-d4a0-4a54-913a-4bfc8e0e8ef6, Authorization=*********************************************************************************************************************************************************************************************************************************************************************************************************************************************9bb3fc, X-Amz-Source-Arn=arn:aws:execute-api:us-east-1:204758858648:ls9fcxi4k1/test-invoke-stage/GET/{proxy+}, X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHgaCXVzLWVhc3QtMSJGMEQCICsQ6ZsgSb71mpvgkJSp932NXHuR0pli4knXT6Sbs+prAiBtOsSbcS8pwTB6eF56E/ARbK5e7Jf8qMiqKYwIdg8D5SrcBAix/ [TRUNCATED]
Sat Jul 16 00:24:12 UTC 2022 : Endpoint request body after transformations: {"resource":"/{proxy+}","path":"/api/Tutors","httpMethod":"GET","headers":null,"multiValueHeaders":null,"queryStringParameters":null,"multiValueQueryStringParameters":null,"pathParameters":{"proxy":"api/Tutors"},"stageVariables":null,"requestContext":{"resourceId":"wqoa6e","resourcePath":"/{proxy+}","httpMethod":"GET","extendedRequestId":"VVW-_GJ3IAMFqDQ=","requestTime":"16/Jul/2022:00:24:12 +0000","path":"/{proxy+}","accountId":"204758858648","protocol":"HTTP/1.1","stage":"test-invoke-stage","domainPrefix":"testPrefix","requestTimeEpoch":1657931052514,"requestId":"9a72a4d9-d4a0-4a54-913a-4bfc8e0e8ef6","identity":{"cognitoIdentityPoolId":null,"cognitoIdentityId":null,"apiKey":"test-invoke-api-key","principalOrgId":null,"cognitoAuthenticationType":null,"userArn":"arn:aws:iam::204758858648:root","apiKeyId":"test-invoke-api-key-id","userAgent":"aws-internal/3 aws-sdk-java/1.12.239 Linux/5.4.196-119.356.amzn2int.x86_64 OpenJDK_64-Bit_Server_VM/25.332-b08 java/1.8.0_332 [TRUNCATED]
Sat Jul 16 00:24:12 UTC 2022 : Sending request to https://lambda.us-east-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-east-1:204758858648:function:TutorMeAPI-AspNetCoreFunction-feH0JQ7qc1x8/invocations
Sat Jul 16 00:24:33 UTC 2022 : Received response. Status: 200, Integration latency: 21292 ms
Sat Jul 16 00:24:33 UTC 2022 : Endpoint response headers: {Date=Sat, 16 Jul 2022 00:24:33 GMT, Content-Type=application/json, Content-Length=138, Connection=keep-alive, x-amzn-RequestId=60dad212-1480-4555-a950-b18629fac5cc, x-amzn-Remapped-Content-Length=0, X-Amz-Executed-Version=$LATEST, X-Amzn-Trace-Id=root=1-62d2052c-c1250f296445a5f4aa4daded;sampled=0}
Sat Jul 16 00:24:33 UTC 2022 : Endpoint response body before transformations: {"statusCode":500,"headers":{},"multiValueHeaders":{"Content-Type":[null],"ErrorType":["SqlException"]},"body":"","isBase64Encoded":false}
Sat Jul 16 00:24:33 UTC 2022 : Method response body after transformations:
Sat Jul 16 00:24:33 UTC 2022 : Method response headers: {Content-Type=null, ErrorType=SqlException, X-Amzn-Trace-Id=Root=1-62d2052c-c1250f296445a5f4aa4daded;Sampled=0}
Sat Jul 16 00:24:33 UTC 2022 : Successfully completed execution
Sat Jul 16 00:24:33 UTC 2022 : Method completed with status: 500
我還注意到它確實返回了自動生成的默認控制器的數據,但對於我連接到數據庫的控制器,它們返回錯誤
這是我的控制器的一個例子:
namespace WebAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class GroupsController : ControllerBase
{
private readonly WebAPIContext _context;
public GroupsController(WebAPIContext context)
{
_context = context;
}
// GET: api/Groups
[HttpGet]
public async Task<ActionResult<IEnumerable<Group>>> GetGroup()
{
if (_context.Group == null)
{
return NotFound();
}
return await _context.Group.ToListAsync();
}
// GET: api/Groups/5
[HttpGet("{id}")]
public async Task<ActionResult<Group>> GetGroup(Guid id)
{
if (_context.Group == null)
{
return NotFound();
}
var @group = await _context.Group.FindAsync(id);
if (@group == null)
{
return NotFound();
}
return @group;
}
}
}
這在本地有效,沒有問題。 lambda 可能有什么問題? 感謝您的時間
Lambda 是一個運行方法/函數的無服務器計算環境。 您正在為您的 ASP.NET Web API 尋找托管解決方案。 查看將您的 ASP.NET Web API 部署到 Elastic Beanstalk。 托管使用 IIS 的 Web 應用程序的任何人都可以使用適用於 .NET 的 Elastic Beanstalk。
詳情在這里:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.