在终结器线程中诊断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的状态。

谁能给一个提示如何诊断这个问题?

在终结器线程中诊断NullReferenceException

在本例中,我们像这样在app.configweb.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文件,看到很多跟踪消息,应该导致你的错误。