HttpClient PostAsJsonAsync incompatibile con Newtonsoft.Json

Qualcosa che ho appena raccolto nella mia app winforms

La mia app effettua una chiamata http a un servizio Web Api come segue

HttpClient _client = new HttpClient(); _client.Timeout = new TimeSpan(0, 3, 0); _client.BaseAddress = new Uri("http://Myserver/MyApp"); _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = _client.PostAsJsonAsync("api/Addin", newObject).Result; 

Niente di speciale, ma non appena installi Newtonsoft.Json (V6.0.3) via nuget

improvvisamente ottengo un errore stackOverflow sulla riga di codice HttpResponseMessage. rimuovere Newtonsoft e il problema è risolto.

Il problema è che dovevo usare la libreria per serializzare / deserializzare i dati altrove nel mio modulo

La mia soluzione alternativa era usare una libreria diversa, sto solo usando System.Runtime.Serialization.Json; ma questo è ancora davvero strano, no?

Devo anche aggiungere che questo è dotnet v4.0 (non 4.5), e la mia app è un object COM VSTO in esecuzione in MsWord come add-on

Sospetto che un bug sia in Newtonsoft

Installa “librerie client microsoft asp.net web api 2.2” da nuget e non riferisci manualmente system.net.http.dll e system.net.http.formatting.dll. Se installi questo pacchetto, installerai anche il json.net corretto

Ho ricevuto l’errore dopo l’aggiornamento a una versione più recente del pacchetto Newtonsoft.Json.

La disinstallazione del pacchetto nugget Microsoft.AspNet.WebApi.Client e la sua reinstallazione dopo l’aggiornamento al nuovo pacchetto Newtonsoft.Json ha risolto il problema.