Как поместить Json в HttpContent и проанализировать его в API Controller?

Я хочу взять JSON, поместить его в StringContent и передать его моему API. Оттуда я хочу десериализовать JSON обратно в класс и использовать его оттуда. В настоящее время я получаю сообщение об ошибке при попытке десериализации, из которого, как я могу судить, logInfo пусто при достижении API. Когда я пытаюсь записать параметр, он пуст в журнале событий. См. Код пользователя и API ниже.

        public void Log(LogInfo logInfo)
        {
        using (var client = CreateHttpClient())
        {
            var jsonData = JsonConvert.SerializeObject(logInfo);
            HttpContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage response = client.PostAsync("Logger/Log", content).Result;

            if (!response.IsSuccessStatusCode)
            {
                throw new InvalidOperationException($"{response} was not successful.");
            }
        }
    }


        [HttpPost]
    public HttpResponseMessage Log([FromBody] string logInfo)
    {
        //var logData = JsonConvert.DeserializeObject<LogInfo>(logInfo);
        EventLog.WriteEntry("TestApp", logInfo);
        EventLog.WriteEntry("TestApp", Request.Content.ReadAsStringAsync().Result);
        //Log(logData);

        return Request.CreateResponse(HttpStatusCode.OK);
    }

1 ответ

Решение

Ваш метод контроллера Log должен принимать параметр LogInfo. Эта модель LogInfo является классом, который действует как DTO/POCO. Таким образом, он должен содержать только те свойства (методы получения и установки), которые вы хотите собрать. Затем вы можете сопоставить этот DTO / POCO с моделью вашего бизнес-домена.

  [HttpPost]
public HttpResponseMessage Log(LogInfo logInfo)
{
   ...
}
Другие вопросы по тегам