In meinem C# -Programm verwende ich WebClient, um eine Zeichenfolge herunterzuladen, die im Allgemeinen funktioniert, aber von Zeit zu Zeit bekomme ich die Ausnahme "Objektreferenz nicht auf eine Instanz eines Objekts gesetzt ".WebClient DownloadString verursacht manchmal "Objektreferenz nicht auf eine Instanz eines Objekts gesetzt" Ausnahme
Das folgende Beispiel zeigt den relevanten Teil des Codes:
String ResponseString = "";
String URITarget = "..... my URI information .....";
using (WebClient WebClientInstance = new WebClient())
{
WebClientInstance.Encoding = System.Text.Encoding.UTF8;
WebClientInstance.Headers.Add("Content-Type", "application/json");
ResponseString = WebClientInstance.DownloadString(URITarget);
}
Die Ausnahme bei dieser Codezeile geschieht:
ResponseString = WebClientInstance.DownloadString(URITarget);
Wie ich Fäden verwendet und damit die Funktion mit dem oben genannten Code kann theoretisch gleichzeitig von verschiedenen Threads aufgerufen werden, dachte ich zuerst das Problem könnte durch die Threads verursacht werden, da der WebClient nicht Thread-sicher ist. Aber nach Schloss (SendWebClientHTTPRequestThreadLock) um den obigen Code Implementierung, dauert es nicht zu einer Verbesserung:
private Object SendWebClientHTTPRequestThreadLock = new Object();
...
String ResponseString = "";
String URITarget = "..... my URI information .....";
lock (SendWebClientHTTPRequestThreadLock)
{
using (WebClient WebClientInstance = new WebClient())
{
WebClientInstance.Encoding = System.Text.Encoding.UTF8;
WebClientInstance.Headers.Add("Content-Type", "application/json");
ResponseString = WebClientInstance.DownloadString(URITarget);
}
}
Kann es sein, dass WebClientInstance.DownloadString (URITarget) gibt NULL zurück, aus irgendeinem Grunde, anstatt die tatsächlichen oder zumindest eine leere Zeichenfolge ? Irgendwelche Vorschläge?
Der Code, wie er gepostet wird, kann keine "NullReferenceException" auslösen, außer irgendwo in der Implementierung von 'DownloadString'. Bitte posten Sie den gesamten Stack-Trace und geben Sie uns vorzugsweise ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve/), über das hinaus, was Sie für relevant halten. –
Es ist nicht "WebClientInstance.DownloadString (URITarget)", das NULL zurückgibt. Es scheint, dass "WebClientInstance" selbst aus irgendeinem Grund "null" ist und Sie daher keine Methode davon aufrufen können. –
Ich habe meiner Anwendung eine Logik hinzugefügt, um die Analyse des Problems zu verbessern. Leider (oder zum Glück?) Tauchte das Problem seit letzter Woche nicht mehr auf. Ich beobachte weiterhin die Situation und werde sobald wie möglich weitere Einzelheiten aufzeigen. – Reboon