C# 在测试体中传递Json时.Net Core 3.1 AWS Lambda错误

C# 在测试体中传递Json时.Net Core 3.1 AWS Lambda错误,c#,api,.net-core,aws-lambda,C#,Api,.net Core,Aws Lambda,我正在尝试测试我的AWS Lambda.Net Core 3.1 API 我使用用于VisualStudio的AWS工具创建了一个标准应用程序,并添加了AesController。正文参数中没有参数的标准Get请求工作正常,但当我尝试使用参数调用Get请求时,我得到了400个错误请求异常,JSON值无法转换为System.String。路径:$|行号:0 |字节位置行:1 测试功能: [Fact] public async Task TestGetEncrypt() {

我正在尝试测试我的AWS Lambda.Net Core 3.1 API

我使用用于VisualStudio的AWS工具创建了一个标准应用程序,并添加了AesController。正文参数中没有参数的标准Get请求工作正常,但当我尝试使用参数调用Get请求时,我得到了400个错误请求异常,JSON值无法转换为System.String。路径:$|行号:0 |字节位置行:1

测试功能:

[Fact]
    public async Task TestGetEncrypt()
    {
        var lambdaFunction = new LambdaEntryPoint();

        var requestStr = File.ReadAllText("./SampleRequests/AesController-GetEncrypt.json");
        var request = JsonConvert.DeserializeObject<APIGatewayProxyRequest>(requestStr);
        var context = new TestLambdaContext();
        var response = await lambdaFunction.FunctionHandlerAsync(request, context);

        Assert.Equal(200, response.StatusCode);
        Assert.Equal("뺕結确᫷", response.Body);
        Assert.True(response.MultiValueHeaders.ContainsKey("Content-Type"));
        Assert.Equal("application/json; charset=utf-8",
            response.MultiValueHeaders["Content-Type"][0]);
    }
API获取函数

    // GET aes/Encrypt
    [HttpGet("GetEncrypt")]
    public async Task<IActionResult> GetEncrypt([FromBody] string content)
    {
        var jsonConvert = JsonConvert.DeserializeObject<JsonAes>(content);
        var aesCrypt = new AesCrypt(jsonConvert);

        return Ok(Encoding.Unicode.GetString(await aesCrypt.CryptAes()));
    }

我相信我在设置JSON中的body参数有问题。我试图传递一个正常的JSON格式,但我得到了相同的错误。

我设法找到了一个解决方案。 我需要编辑get请求函数参数以指向对象而不是普通字符串

正确的代码:

    // GET aes/Encrypt
    [HttpGet("GetEncrypt")]
    public async Task<IActionResult> GetEncrypt([FromBody] JsonAes content)
    {
        var aesCrypt = new AesCrypt(content);

        return Ok(Encoding.Unicode.GetString(await aesCrypt.CryptAes()));
    }

内容类型应该是application/jsonok,在标题中,对吗?现在我要回复400个错误的请求显示请求的值与设置相同JSONLet的请保持评论的文明和建设性。非常感谢。
    // GET aes/Encrypt
    [HttpGet("GetEncrypt")]
    public async Task<IActionResult> GetEncrypt([FromBody] JsonAes content)
    {
        var aesCrypt = new AesCrypt(content);

        return Ok(Encoding.Unicode.GetString(await aesCrypt.CryptAes()));
    }