我有一个应用程序,我时不时地遇到一个奇怪的错误。这是一段代码:
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?
还有其他想法吗?(任何指针表示赞赏)