#asp.net-web-api
#asp.net-web-api
Вопрос:
с моим WebAPI происходит что-то странное, в чем я, кажется, пока не могу разобраться. Я использую SoapUI для публикации этой полезной нагрузки:
{
'Id': '00000000-0000-0000-1821-000000000000',
'Operation': 'post',
'Severity': 1,
'LoginName': 'nickj@noemail.email',
'EventText': 'testing post method'
}
Мой WebAPI — это просто:
public HttpResponseMessage PostTrackingInformation(HttpRequestMessage req)
{
var content = req.Content;
string jsonContent = content.ReadAsStringAsync().Resu<
}
Однако, когда я смотрю на содержимое строки, я в конечном итоге получаю содержимое, которое выглядит следующим образом:
[[[]],[[]],[[]],[[]],[[]]]
Я отправляю application / json в качестве типа содержимого
Кто-нибудь видел это раньше? Чего я не понимаю? Спасибо, Ник
Комментарии:
1. Есть ли причина, по которой вы включаете
HttpRequestMessage
в качестве параметра? К нему можно получить доступ в методе контроллера с помощьюthis.Request
. Обычно вы бы использовали,public HttpResponseMessage PostTrackingInformation(TrackingInfo info)
гдеTrackingInfo
— это класс, который представлен вашим JSON — без необходимости самостоятельно считывать полезную нагрузку из запроса.2. Я делал это таким образом. С именем класса в нем. Но я также сталкивался с проблемами, когда класс не отображал способ, который мне был нужен в JSON. Поэтому я делаю это явно сейчас, а не неявно.
Ответ №1:
Оказывается, это проблема не с самим API, а с версией Restsharp 106.69 и Newtonsoft.
В итоге я добавил этот пакет:
используя RestSharp.Serializers.Newtonsoft.Json;
и затем мои строки запроса Restsharp, подобные этой:
var request = новый RestSharp.RestRequest {Метод = Метод.POST, RequestFormat = DataFormat.Json, JsonSerializer = new NewtonsoftJsonSerializer()};
Также похоже, что следующая основная версия RestSharp (107) снова будет поддерживать Newtonsoft.