【问题标题】:Dotnet Core on AWS Lambda and API GatewayAWS Lambda 和 API 网关上的 Dotnet Core
【发布时间】:2018-06-21 12:42:40
【问题描述】:

我是使用 Dotnet Core 的 AWS Lambda 新手。我在 Visual Studio 上使用 AWS Lambda Project (.NET Core) 创建了新的项目模板。 HelloWorld 函数非常基本,只返回大写字母

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

using Amazon.Lambda.Core;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace HelloWorld
{
    public class Function
    {

        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public string FunctionHandler(string input, ILambdaContext context)
        {
            return input?.ToUpper();
        }
    }
}

成功创建并成功发布到 AWS。但我无法在 Postman 中调用...我收到以下消息

[
    "at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)",
    "at Newtonsoft.Json.JsonTextReader.ReadAsString()",
    "at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)",
    "at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)",
    "at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)",
    "at Newtonsoft.Json.JsonSerializer.Deserialize[T](JsonReader reader)",
    "at Amazon.Lambda.Serialization.Json.JsonSerializer.Deserialize[T](Stream requestStream)",
    "at lambda_method(Closure , Stream , Stream , LambdaContextInternal )"
]

我在 Visual Studio 上使用 AWSToolkitPackage 运行测试,它可以工作!因为输入参数是一个字符串。但是在 PostMan 上,我也尝试放置一个字符串,但它没有用......有没有人有这方面的经验?非常感谢。

【问题讨论】:

  • 你能在你的 lambda 中发布你所有的代码吗?
  • 你好,我更新了完整的代码。谢谢

标签: json .net-core


【解决方案1】:

你错过了这一行

using Amazon.Lambda.Serialization;

没有这条线,这条线

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

真的没用

【讨论】:

  • 它不起作用...我用VS测试过,它有效,但用PostMan,它不起作用。我认为是因为在 VS 中他们允许将参数输入为“字符串”,但 PostMan 将参数传递为“json”,我认为...
【解决方案2】:

啊!!!!我找到了解决方案。不要使用“字符串”,而是使用“JObject”

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 2019-05-10
    • 2020-10-07
    • 2021-03-02
    • 2018-09-26
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多