【发布时间】:2008-11-12 17:24:20
【问题描述】:
我有一个应用程序时不时地遇到一个奇怪的错误。 这是一段代码:
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()
我得到的错误是: 消息:对象引用未设置为对象的实例。
在线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秒不回答…… 如果客户端断开连接(即关闭浏览器窗口),此 Stream 是否有可能变为 Null?
还有其他想法吗? (任何指针表示赞赏)
【问题讨论】:
标签: asp.net null objectoutputstream