2017-10-10 3 views
0

Hey ich habe ein seltsames Problem, das ich nicht herausfinden kann. Im Grunde versuche ich eine einfache httpClient Post Anfrage zu machen, aber ich bekomme immer eine "Invalid json primitive:" Ich habe auf https://jsonlint.com/ überprüft und es sagt, das ist gültig json, aber meine Anwendung sagt etwas anderes. Irgendwelche Informationen würden sehr geschätzt werden?Erhalten Invalid Json primative

string test = "{\"CurrentUser\":null,\"Stacktrace\":\"System.UnhandledExceptionEventArgs\",\"OtherData\":null,\"UserInput\":\"\",\"TimeStamp\":\"2017-10-10T16:48:58.606512-04:00\"}" 

HttpContent httpContent = new StringContent(test); 
await httpClient.PostAsync("/api/logException", httpContent); 

Und der Client initialisiert wie:

httpClient = new HttpClient(); 
httpClient.BaseAddress = new Uri(this.serverURL); 
httpClient.Timeout = TimeSpan.FromSeconds(400); 
+0

Könnten Sie bitte zeigen, wie Sie Ihren HttpClient initialisieren? –

+0

Fertig, aber ich glaube nicht, dass hier etwas Besonderes passiert. Ich kann tatsächlich andere Postanfragen machen, aber diese spezifische scheint das Problem zu sein. Wenn es hilft, ist dies für die Protokollierung nicht behandelter Ausnahmen zu einer Datenbank – Seamy

+0

Nur gebaut und ausgeführt, und alles scheint gut zu funktionieren. Ich denke, das Problem sollte tiefer in deiner Konfiguration liegen. –

Antwort

0

Hey danke für die Antworten. Sie sind alle richtig und ich schätze die Hilfe. Das Problem war am Ende nicht wirklich Json. Im Grunde verbreitete sich dieser Fehler und erschien tatsächlich zweimal, nachdem ich dachte, dass er gehandhabt wurde. Also, wo ich dachte, es würde mir sagen, dass ein ungültiger JSON existiert (wo es kaputt war), war es tatsächlich die gleiche Fehlermeldung von weiter oben im Code.

Nochmals vielen Dank.

0

Ich bin kein Experte, aber da sonst niemand geantwortet hat, vielleicht brauchen Sie nur den Inhaltstyp JSON zu setzen?

HttpContent httpContent = new StringContent(test, Encoding.UTF8, "application/json"); 

Siehe POSTing JsonObject With HttpClient From Web API

+0

Ich versuchte das genauso, aber auch kein Glück. – Seamy

0

-String.Replace("\", string.Empty) zu Ihrem json Versuchen. Vielleicht wird das funktionieren.

2

Anstatt das JSON-Format selbst zu schreiben (was fehleranfällig ist), erstellen Sie einfach ein Objekt und serialisieren es in JSON. Habe C# das schwere Heben. Erstellen Sie zunächst eine Klasse wie:

public class Model 
{ 
    public string CurrentUser { get; set; } = null; 
    public string Stacktrace { get; set; } = "System.UnhandledExceptionEventArgs"; 
    public string UserInput { get; set; } = String.Empty; 
    public string OtherData { get; set; } = null; 
    public string TimeStamp { get; set; } = "2017-10-10T16:48:58.606512-04:00"; 
} 

Dann ein Objekt dieser Klasse initialisieren und einfach JavaScriptSerializer verwenden Sie es in Json zu serialisiert:

Model md = new Model(); 
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var json = ser.Serialize(md); 

Das Ergebnis in json sein wird:

{"CurrentUser":null,"Stacktrace":"System.UnhandledExceptionEventArgs","UserInput":"","OtherData":null,"TimeStamp":"2017-10-10T16:48:58.606512-04:00"}