Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在.net核心web API控制器中从请求体捕获复杂类型JSON_Asp.net Mvc_Asp.net Core_Asp.net Web Api_Apache Kafka_Confluent Platform - Fatal编程技术网

Asp.net mvc 在.net核心web API控制器中从请求体捕获复杂类型JSON

Asp.net mvc 在.net核心web API控制器中从请求体捕获复杂类型JSON,asp.net-mvc,asp.net-core,asp.net-web-api,apache-kafka,confluent-platform,Asp.net Mvc,Asp.net Core,Asp.net Web Api,Apache Kafka,Confluent Platform,我在控制器中有以下内容,它漂亮地捕获了来自QueryString的ProducerConfig设置 [HttpPost("mylink/load/")] public async Task<IActionResult> PostMessageAsync(CancellationToken cancellationToken, [FromQuery] ProducerConfig producerConfigs) 但由于400个错误请求而失败 响应

我在控制器中有以下内容,它漂亮地捕获了来自QueryString的
ProducerConfig
设置

[HttpPost("mylink/load/")]
        public async Task<IActionResult> PostMessageAsync(CancellationToken cancellationToken, [FromQuery] ProducerConfig producerConfigs)
但由于400个错误请求而失败

响应

{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|246f628d-4624827bfa8633b1.","errors":{"$":["The JSON value could not be converted to Confluent.Kafka.ProducerConfig. Path: $ | LineNumber: 0 | BytePositionInLine: 1."]}}

  

更新日期2007年23月

{“类型”:https://tools.ietf.org/html/rfc7231#section-6.5.1“标题”:“一” 一个或多个验证错误 已发生。“,“状态”:400,“traceId”:“| 246f628d-4624827bfa8633b1。”,“错误”:{“$”:[“ 无法将JSON值转换为Confluent.Kafka.ProducerConfig。 路径:$|行号:0 | BytePositionLine:1。“]}

我以前遇到过这种情况。您可以尝试安装
Newtonsoft.JSON
软件包

Install Microsoft.AspNetCore.Mvc.NewtonsoftJson package.
在startup.cs中添加

services.AddControllers().AddNewtonsoftJson();

如果使用
[FromBody]

Get
不发送表单正文,它只请求
URL
。在视图中使用
并将其发布到控制器方法,该方法需要使用
HttpPost
进行修饰

控制器代码

调试截图

邮递员截图


Hi,@Saher,你在使用[FromBody]时设置了PostMessageAsync HttpPost吗?这是一个帖子,所以我不知道为什么会这样。我最终使用了另一个类并将属性转换为
ProducerConfig
我看不到您的ProducerConfig模型。从响应中,您应该检查Confluent.Kafka.ProducerConfig.Install Newtonsoft.JSON包中的属性类型或其验证,以自动转换。
Install Microsoft.AspNetCore.Mvc.NewtonsoftJson package.
services.AddControllers().AddNewtonsoftJson();
        [HttpPost("mylink/load/")]
        public IActionResult PostMessageAsync(CancellationToken cancellationToken, [FromBody] ProducerConfig producerConfigs) 
        {
            return Json(producerConfigs);
        }