2016-11-17 4 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() 

로그 응용 프로그램 이벤트에 다음을 보여주는, 정기적으로 충돌되는 호스팅, 내가보기 엔이 오라클 것을 의심 버그가 아니라 오라클 데이터 판독기의 상태를 손상시키고 있습니다.

누군가이 문제를 진단하는 방법에 대한 힌트를 줄 수 있습니까? 우리의 경우

+0

버그 일 수 있습니다. 일반적인 규칙이 있습니다 : 개체가 어떤 상태에 있든 관계없이 파이널 라이저에 예외가 없습니다. 그러나이 finalizer가이 'IDisposable'에 호출되는 것은 의심 스럽습니다. 어딘가에이 객체가 삭제되지 않고 가비지 수집됩니다. 그것이'using's에 있는지 확인하거나'Dispose()'를 가져옵니다. d. – dymanoid

+0

당신은 이것의 아래에 이제까지 얻었습니까? 나는 같은 문제를 가지고있다. OracleDataReader dispose 메서드가 내 구현 문을 무의미하게 만드는 오버라이드 대신 기본 구현을 숨기는 것으로 나타났습니다. 나는 그것이 그 문제라고 완전히 확신하지 못한다. 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 파일에서 모양과 당신의 오류로 연결되어야 추적 메시지를 많이 볼 수 있습니다.