Aws-lambda-dotnet: Amazon.Lambda.AspNetCoreServer在本地和AWS上的不同行为

创建于 2018-02-28  ·  7评论  ·  资料来源: aws/aws-lambda-dotnet

您好AWS团队,

您的LambdaEntryPoint的实现存在一些问题,其行为与LocalEntryPoint上的行为有所不同。 要重新创建这种情况,您需要设置CustomAttribute:

```
公共类CustomAttribute:ActionFilterAttribute
{
公共重写void OnActionExecuted(ActionExecutedContext actionExecutedContext)
{
HttpResponse响应= actionExecutedContext.HttpContext.Response;
LambdaLogger.Log(“ Test” + response.StatusCode +“” +(响应!= null).ToString()+“” +
response.IsSuccessStatusCode()。ToString()+“” +(actionExecutedContext.Result!= null).ToString());

        base.OnActionExecuted(actionExecutedContext);
    }
}

```

如果您使用localEntry测试此CustomAttribute,则将看到已设置StatusCode,但是在AWS上调试该代码时,将得到0,原因是工作顺序不同。 我在这里与OData小组一起调查此问题:OData / WebApi#1227

A bug modullambda-client-lib queued

最有用的评论

@normj有解决此问题的计划吗?

所有7条评论

我能够重现该问题,但仍不确定为什么会发生,但我将继续调查。

这个话题有什么新闻吗?

@normj ,这个自定义操作过滤器也有类似的问题

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace Infrastructure
{
    public class ValidateModelAttribute : ActionFilterAttribute, IOrderedFilter
    {
        public ValidateModelAttribute()
        {
            Order = 100;
        }
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ModelState.IsValid)
            {
                context.Result = new BadRequestObjectResult(context.ModelState);
            }
        }
    }
}

它在本地运行良好,并返回验证错误并终止请求,但在部署到AWS Lambda时不会执行。

如果有计划修复它,仍然会发生此错误?

@normj有解决此问题的计划吗?

最新消息是什么? 自上次添加评论以来已经一年多了。 @ NGL321 ,您可以提供更新吗?

@julealgon

对不起,标签,走了。 我们目前已经知道此错误,并计划进行修复,但是很遗憾,由于目前不在立即修复计划中,因此我无法给您更具体的时间表。
如果阻止了此操作,欢迎您提交拉动请求进行修复,我们将尽快对其进行审核。 或者,继续碰碰这个问题,我将确保它在可行的情况下尽快得到关注(请求修复的人越多,我们可以将其优先级提高的程度)higher

😷

此页面是否有帮助?
0 / 5 - 0 等级