Я получаю NullReferenceExceptions в проекте webforms, который я поддерживаю. Уловка заключается в том, что для этого исключения нет stacktrace, потому что ни один из моих кодов не вызывает исключение. async await Task null reference exception
Сведения об исключении скопированные в буфер обмена предлагает нулевую помощь:
System.NullReferenceException was unhandled Message: An unhandled exception of type 'System.NullReferenceException' occurred in mscorlib.dll Additional information: Object reference not set to an instance of an object.
При просмотре кода StackTrace не пользовательский, я вижу следующее (все в mscorlib):
В ошибка возникает случайным образом и непоследовательно, либо путем загрузки страниц, либо путем обратной передачи. Проблема началась после того, как я добавил System.Net.Http.HttpClient
для вытягивания данных из служб REST, открытых на других сайтах. Обратите внимание, что HttpClient содержит только асинхронные методы для отправки/получения данных. Основываясь на внутренней stacktrace, я очень подозреваю, что Задача <>/async/ждет в качестве виновника.
Чтобы помочь устранить неполадки, позвольте мне подтвердить, что я запускаю это на сайте WebForms, компилирующем в .NET 4.6 (и если вы собираетесь сказать мне, что моя проблема в том, что мне нужно обновить до MVC, сохраните нажатия клавиш и не говорите об этом). В то время как HttpClient предоставляет все как Task <>, я называю их синхронно по телефону:
Task<MyObject> myResultTask = restClient.GetResultAsync(); MyObject myResult = myResultTask.Result; // no await
Заранее спасибо!
просто позвонить Await лол – Steve
@Steve нет, [ 'Task.Result'] (https://msdn.microsoft.com/en-us/library/dd321468 (v = vs.110) .aspx) _does_ дождаться завершения задачи до того, как она вернет свое значение. –
@ RenéVogt, если я правильно помню, вы можете легко наткнуться на все виды странных проблем, не дожидаясь – Steve