2016-11-17 17 views
3

私たちのIISは、WCFアプリケーションが、これはOracle.DataAccess 4.121.2.0ある診断とNullReferenceExceptionは、ファイナライザスレッドで

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であることを疑いますバグではなく、OracleDataReaderの状態が何らかの形で損なわれていることを示しています。

誰かがこの問題を診断するヒントを教えてもらえますか?我々の場合には

+0

しかし、バグかもしれません。オブジェクトがどの状態にあるかにかかわらず、ファイナライザに例外はありませんが、ファイナライザがこの「IDisposable」に対して呼び出されることは疑いありません。どこかで、このオブジェクトは廃棄されていないので、ガベージコレクションされます。それが 'using'sであるか、' Dispose() 'を取得していることを確認してください。 – dymanoid

+0

あなたはこれまで一番下に入りましたか?私は同じ問題を抱えています。私は、OracleDataReaderのdisposeメソッドが、私のusingステートメントを無意味にするオーバーライドではなく、Base実装を隠していることに気付きました。私は完全にそれが問題だと確信していない。多くのものがOracleDataReaderを使用しているため、問題は他の場所にある可能性があります。 –

+0

悲しいことではありませんが、プロダクションで時々報告されて、完全なIISの再起動から回復するために私たちのアーキテクチャを変更するルートに行きました。 – Dominik

答えて

1

我々はこのよう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ファイルを見ていると自分の誤りにつながるはずトレースメッセージの多くを見ることができます。

関連する問題