В экземпляре объекта не задана ссылка на объект - PullRequest
1 голос
/ 19 февраля 2009

Я вижу следующее исключение.

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта. в System.Web.Util.StringUtil.memcpyimpl (Байт * src, Байт * dest, Int32 len) в System.Web.Util.StringUtil.UnsafeStringCopy (строка src, Int32 srcIndex, Char [] dest, Int32 destIndex, Int32 len) в System.Web.HttpWriter.Write (String s) at System.Web.HttpResponse.Write (String s)

У меня уже есть следующие проверки контекста, на который я отвечаю.

return !(context == null || context.Response == null ||
    context.Response.OutputStream == null ||
    !context.Response.OutputStream.CanWrite);

Может кто-нибудь намекнуть на то, что может быть причиной этого?

Ответы [ 5 ]

1 голос
/ 14 апреля 2013

У меня была эта ошибка при работе с асинхронными обработчиками и модулями. Моя проблема заключалась в том, что я использовал бы ThreadPool.QueueUserWorkItem из метода HttpHandler's EndProcessRequest, а в рамках обратного вызова рабочего элемента я попытался бы использовать HttpContext. Проблема в том, что когда EndProcessRequest возвращается обратно к вызывающей стороне (но обратный вызов рабочего элемента еще не был вызван), экземпляр объекта HttpContext больше не является "моим", и ASP.NET взял на себя управление и разрушает его. См. http://odetocode.com/articles/112.aspx для получения дополнительной информации.

1 голос
/ 19 февраля 2009

Вы уверены, что это ошибка? Похоже, исключение началось с метода Write HttpResponse.

0 голосов
/ 19 февраля 2009

Это может происходить, если вы пытаетесь записать нулевой объект в буфер IE:

context.Response.OutputStream.Write(null, 0, 0);

Также Вы можете представить это как ...

return (context != null && context.Response != null &&
    context.Response.OutputStream != null &&
    context.Response.OutputStream.CanWrite);
0 голосов
/ 19 февраля 2009

Я думаю, что ваша ошибка в другом месте, но я бы посоветовал написать это выражение более прямо без негативов:

return context != null && context.Response != null &&
    context.Response.OutputStream != null &&
    context.Response.OutputStream.CanWrite;
0 голосов
/ 19 февраля 2009

Зачем вообще беспокоиться обо всех этих проверках? Почему бы просто не записать в выходной поток и покончить с этим?

Кроме того, где в конвейере обработки ASP.NET выполняется этот вызов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...