ときどき奇妙なエラーが発生するアプリケーションがあります。これはコードの一部です:
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 秒間応答しない場合があります... クライアントが切断した場合 (つまり、ブラウザー ウィンドウを閉じた場合)、このストリームが Null になる可能性はありますか?
他のアイデアはありますか?(任意のポインタをいただければ幸いです)