Изменения в [FromForm] в .net core 8, где значение JSON не поддерживаетсяC#

Место общения программистов C#
Ответить
Anonymous
 Изменения в [FromForm] в .net core 8, где значение JSON не поддерживается

Сообщение Anonymous »

у нас есть рабочий API ядра .net, который принимает 3 значения и обрабатывает их. Вы можете увидеть снимок экрана ниже, на котором есть заполнители для всех полей. В поле сообщения мы смогли передать как данные JSON, так и XML-данные, которые наш API смог использовать.
Изображение

Теперь, после того как мы обновили наш код до последней версии .net, вы можете увидеть это все три поля ввода принимают строку в качестве значения по умолчанию. Более того, основная проблема заключается в том, что если мы отправляем значение json в поле «Сообщение», мы получаем исключение 400, говорящее, что поле сообщения не может быть пустым.
[img]https://i. sstatic.net/8M63X0uT.png[/img]

Код моего контроллера и код класса остаются такими же, как указано ниже: -

Код: Выделить всё

   [HttpPost("Produce/v2")]
public async Task ProduceForm([FromForm] KafkaPublisherRequest kafkaPublisherRequest)
{
if (kafkaPublisherRequest == null || !ModelState.IsValid)
{
return BadRequest();
}
_logger.LogInformation($"Started Publishing into Kafka Topic : {kafkaPublisherRequest.Topic}, Key :{kafkaPublisherRequest.Key}");
//Main code

return Ok(new ServiceResult(ServiceState.Completed, kafkaPublisherRequest.Key, "Produced Successfully"));
}
А вот мой класс модели: -

Код: Выделить всё

 public class KafkaPublisherRequest
{
[Required]

public string Key { get; set; }

[Required]
public string Message { get; set; }

[Required]
public string Topic { get; set; }

public Dictionary Headers { get; set; }
}
Когда я публикую сообщение как {"Name":"Nikhil", создается URL-адрес Curl: -

Код: Выделить всё

curl -X 'POST' \
'https://localhost:5001/xxxxx' \
-H 'accept: text/plain' \
-H 'Content-Type: multipart/form-data' \
-F 'Key=Key' \
-F 'Name=Nikhil' \
-F 'Topic=topic' \
-F 'Headers='
-F 'Headers='
Здесь вы можете видеть, что поле сообщения отсутствует, и имя свойства рассматривается как Nikhil, а не сообщение, поэтому возникает исключение 400, поскольку поле сообщения отсутствует.
Когда я публикую сообщение как {"Name"="Nikhil", создается URL-адрес Curl: -

Код: Выделить всё

curl -X 'POST' \
'https://localhost:5001/api/KafkaProducer/Produce/v2' \
-H 'accept: text/plain' \
-H 'Content-Type: multipart/form-data' \
-F 'Key=Key' \
-F 'Message={"Name"="Nikhil"}' \
-F 'Topic=sdajsdasd' \
-F 'Headers='
Это работает нормально, поскольку поле сообщения принимает значения

Подробнее здесь: https://stackoverflow.com/questions/787 ... -supported
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»