.net 对象引用未设置为对象的实例

.net 对象引用未设置为对象的实例,.net,exception,httpwebrequest,.net,Exception,Httpwebrequest,我看到以下例外情况 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.W

我看到以下例外情况

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处(字符串s) 在System.Web.HttpResponse.Write处(字符串s)

我已经对我响应的上下文进行了以下检查

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

有人能告诉我是什么导致了这一切吗?

为什么还要费心做这些检查呢?为什么不直接写入输出流并处理它呢


另外,此调用在ASP.NET处理管道中的何处进行?

您确定这就是错误所在吗?看起来异常是从HttpResponse的Write方法开始的。

我认为您的错误在其他地方,但我建议更直接地编写此表达式,而不要使用否定词:

return context != null && context.Response != null &&
    context.Response.OutputStream != null &&
    context.Response.OutputStream.CanWrite;

如果您试图将空对象写入缓冲区,则可能会发生这种情况,即:

context.Response.OutputStream.Write(null, 0, 0);
你也可以把它表示为

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

我在使用异步处理程序和模块时出现了这个错误。我的问题是,我会在
HttpHandler的EndProcessRequest
方法中使用
ThreadPool.QueueUserWorkItem
,并在工作项回调中尝试使用
HttpContext
。问题是,一旦
EndProcessRequest
返回调用方(但尚未调用工作项回调),
HttpContext
对象实例不再是“我的”,ASP.NET已承担控制权并将其拆除。有关更多信息,请参阅。

//获取文本编写器TextWriter=context.Response.Output的本地副本;//写出消息map writer.write(“输出数据…”)@未知(谷歌):我的意思是,在哪里处理管道。这是HTTP处理程序吗?应用程序事件处理程序?