在终结器线程中诊断NullReferenceException
本文关键字:诊断 NullReferenceException 线程 | 更新日期: 2023-09-27 18:18:15
我们的IIS托管的WCF应用程序定期崩溃,在应用程序事件日志
中显示以下内容Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.NullReferenceException
Stack:
at Oracle.DataAccess.Client.OracleDataReader.Dispose(Boolean)
at Oracle.DataAccess.Client.OracleDataReader.Finalize()
这是Oracle。数据访问4.121.2.0,我非常怀疑这是一个Oracle的错误,而是我们以某种方式破坏了OracleDataReader的状态。
谁能给一个提示如何诊断这个问题?
在本例中,我们像这样在app.config
或web.config
中启用跟踪日志记录:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="All" propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="myUserTraceSource" switchValue="Information, ActivityTracing">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:'Temp'WcfTrace.svclog" />
</sharedListeners>
</system.diagnostics>
现在你可以看看WcfTrace.svclog
文件,看到很多跟踪消息,应该导致你的错误。