2009-08-17 3 views
0

나는 ASHX 파일에 다음 코드를 가지고 -라고 ;-)OracleConnection.ClearAllPools - 작업이 개체의 현재 상태로 인해 유효하지 않습니다

<%@ WebHandler Language="C#" Class="Site.Pool" %> 

using System; 
using System.Data; 
using System.IO; 
using System.Web; 
using System.Web.SessionState; 

using Core.Database; 
using Core.ITables; 
using Online.Server.Busi; 
using Online.Server.ITables; 
using XactNet.Busi; 

namespace Site 
{ 
    public class Pool : IHttpHandler, IRequiresSessionState 
    { 
      public void ProcessRequest(HttpContext context) 
      { 
      try 
      { 
       Oracle.DataAccess.Client.OracleConnection.ClearAllPools(); 
       context.Response.Write("SUCCESS"); 
      } 
      catch (Exception e) 
      { 
       context.Response.Write(e.ToString()); 
      } 

     } 

      public bool IsReusable 
      { 
       get { return false; } 
     } 
     } 
} 

는, 예외가 얻는 이유를 묻지 않는다 작성 :

System.InvalidOperationException: Operation is not valid due to the current state of the object. 
at Oracle.DataAccess.Client.OracleConnection.ClearAllPools() 
at Site.Pool.ProcessRequest(HttpContext context) 

연결 풀을 지우려면 어떤 상태로해야합니까?

감사합니다,

답변

4

이 경우 InvalidOperationException의 기본 오류 메시지입니다, 그래서 분명히 오라클은 명시 적 오류 메시지를 작성하는 귀찮게하지 않았다 ... 그것은이 경우에는 어떤 중요한 의미를 가지고 생각하지 않습니다. 여기

은 반사판에 따르면, ClearAllPools 방법의 코드입니다 :

public static void ClearAllPools() 
{ 
    if (!OracleInit.bSetDllDirectoryInvoked) 
    { 
     OracleInit.Initialize(); 
    } 
    if (((ConnectionDispenser.m_ConnectionPools == null) || (ConnectionDispenser.m_ConnectionPools.Count == 0)) && ((ConnectionDispenser.m_htSvcToRLB == null) || (ConnectionDispenser.m_htSvcToRLB.Count == 0))) 
    { 
     throw new InvalidOperationException(); 
    } 
    ConnectionDispenser.ClearAllPools(); 
} 

그래서 분명히 더 연결 풀이없는이 예외를 throw, 나는 결국에는 그 확인의 방법 ... 그렇게 볼 수 없습니다 유일한 옵션은 예외를 잡는 것입니다

+0

그래, 나는 반사경에서도 그것을 열어 보았다. 왜 내가 시간에 연결 풀 (어쩌면 내가 ashx 파일을 거기에 넣을 때 응용 프로그램을 다시 시작하지 않은 이유) – ConsultUtah

관련 문제