我有一个应用程序,其中每隔一段时间我得到一个奇怪的错误。 这是一段代码:NullReferenceException当发送XMLWrite输出到httpContext.Response.OutputStream
Dim XMLWriter As New System.Xml.XmlTextWriter(Me.Context.Response.OutputStream, Encoding.UTF8)
XMLWriter.WriteStartDocument()
XMLWriter.WriteStartElement("Status")
Message.SerializeToXML(XMLWriter)
XMLWriter.WriteEndElement()
XMLWriter.WriteEndDocument()
XMLWriter.Flush()
XMLWriter.Close()
我得到的错误是: 消息:对象没有设置为一个对象的一个实例。
on line XMLWriter.Flush();
为了让事情更有趣,这是绝对不可重复的。它只是偶尔发生......
因为它发生在刷新XML时我猜测现在null的对象必须是Response.OutputStream。
这是堆栈跟踪的相关部分:
Description:
An unhandled exception occurred and the process was terminated.
Exception: System.NullReferenceException
Message: Object reference not set to an instance of an object.
StackTrace: at System.Web.HttpWriter.BufferData(Byte[] data, Int32 offset, Int32 size, Boolean needToCopyData)
at System.Web.HttpWriter.WriteFromStream(Byte[] data, Int32 offset, Int32 size)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.Xml.XmlTextWriter.Flush()
at RequestData.CompleteRequest(MessageBase Message) in RequestData.vb:line 142
我的问题是,在这哪是什么发生的情况? 此服务器是一个长轮询服务器,所以客户端请求了一些东西,并且我可能不会在30秒内回答... 如果客户端断开连接(即关闭浏览器窗口),该流可能会变为空, ?
还有其他想法吗? (任何指针赞赏)
我明白,但OutputStream中有问题的东西(仅在写入时才使用)为空? – 2008-11-12 20:54:59