В моей программе C# я использую WebClient для загрузки строки, которая отлично работает в целом, но время от времени я получаю исключение »ссылка на объект не установлен в экземпляр объекта ".WebClient DownloadString иногда вызывает исключение «ссылка на объект, не установленное на экземпляр объекта»
Следующий пример показывает соответствующую часть кода:
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);
}
Исключение происходит в этой строке кода:
ResponseString = WebClientInstance.DownloadString(URITarget);
Как я использую темы и, следовательно, функцию с указанным кодом можно назвать теоретически в то же время из разных потоков. Сначала я думал, что проблема может быть вызвана потоками, поскольку WebClient не является потокобезопасным. Но после реализации блокировки (SendWebClientHTTPRequestThreadLock) вокруг кода выше, это не принесло никаких улучшений:
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);
}
}
Может ли быть, что WebClientInstance.DownloadString (URITarget) возвращает NULL по какой-то причине вместо фактической или по крайней мере, пустая строка ? Какие-либо предложения?
Код как опубликованный не может вызывать 'NullReferenceException', кроме как где-то похоронен в реализации' DownloadString'. Пожалуйста, разместите всю трассировку стека и, желательно, дайте нам [минимальный, полный и проверяемый пример] (http://stackoverflow.com/help/mcve/), помимо того, что вы считаете релевантным. –
Это не 'WebClientInstance.DownloadString (URITarget)', который возвращает NULL. Кажется, что 'WebClientInstance' сам по себе является' null', поэтому вы не можете вызвать какой-либо его метод. –
Я добавил еще несколько логик в мое приложение, чтобы улучшить анализ проблемы. К сожалению (или, к счастью?), Проблема не появилась снова с прошлой недели. Я продолжаю следить за ситуацией и буду получать дополнительную информацию, как только это будет возможно. – Reboon