如题:
  项目由于需要更换Oracle数据库(数据库是Oracle 11g),更换后,在一台测试机上测试,项目无任何问题,但是当把项目部署在正式环境后,系统时不时总是出现报错,而且不是所有的页面报错,就是登陆页面、菜单以及任务办理台几个页面经常性出错,但是其他的功能页面可以正常使用。
错误信息如下所示:
System.Web.HttpUnhandledException: 引发类型为“System.Web.HttpUnhandledException”的异常。 --->  
System.InvalidOperationException: 无效操作。连接被关闭。
在 MIS.LeftFrame.Page_Load(Object sender, EventArgs e) 位置 E:\MIS
\LeftFrame.aspx.cs:行号 69
在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Web.UI.Page.HandleError(Exception e)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean  
includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest()
在 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
在 System.Web.UI.Page.ProcessRequest(HttpContext context)
在 ASP.leftframe_aspx.ProcessRequest(HttpContext context) 位置  
c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET  
Files\mis\3993a5a1\237a9fe4\App_Web_3hx5vqnz.14.cs:行号 0
在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
  我在网上查了一下,也有类似情况的,大部分说是数据库连接已经关闭。如果真是这样的话,那就应该所有的操作都出现类似情况,因为我数据库访问层已经封装,所有的业务操作方法都是用同一个底层的数据库操作方法,而且在测试机上运行了1个多月了,也无任何问题。
  我现在有点怀疑是不是正式环境的机器没有配置好环境。
  正式环境是新机器windows server 2008系统64位机器,framework3.5 sp1,其他应用软件都没有装,Oracle客服端也没装。 Oracle是在另一台服务器上(同IP段的),数据库访问是通过System.Data.OracleClient.dll访问的。
  平时Oracle用得少,主要是用Sql Server,这个问题困扰我2天了。有的说应用程序所在服务器需要装Oracle客户端,但是我不装,为什么还是可以访问Oracle数据库,只是只有几个页面不能正常访问呢?
  一时我也不怎么明白其中原由,还请各位帮帮忙,出出主意。

解决方案 »

  1.   

    Oracle 配置问题。你也可以在执行Command 时,判断。连接是否关闭,如果关闭就打开。
      

  2.   

       谢谢“zetee”给的宝贵意见。
       数据库访问层我已封装,每次操作数据库会自动会判断的,服务器上没装VS无法调试,再说,也不是每次都出现这样的问题,是概率事件。
       如果是Oracle 配置问题,那应该如何配置才正确,请麻烦解释一下,谢谢!
      

  3.   

    在Java中试用链接池也遇到过类似问题   求解
      

  4.   

    系统事件查看器出现以下错误(按时间先后):记录时间:2011/1/11 15:33:44
    .NET Runtime version 2.0.50727.3615 - 执行引擎错误(728979AE) (80131506)记录时间:2011/1/11 15:33:44
    错误应用程序 w3wp.exe,版本 7.0.6001.18000,时间戳 0x47919413,错误模块 mscorwks.dll,版本 2.0.50727.3615,时间戳 0x4be902c7,异常代码 0xc0000005,错误偏移量 0x000546a8, 进程 ID 0x%9,应用程序启动时间 0x%10。记录时间:2011/1/11 15:35:40
    .NET Runtime version 2.0.50727.3615 - 执行引擎错误(728979AE) (80131506)记录时间:2011/1/11 15:35:40
    错误应用程序 w3wp.exe,版本 7.0.6001.18000,时间戳 0x47919413,错误模块 mscorwks.dll,版本 2.0.50727.3615,时间戳 0x4be902c7,异常代码 0xc0000005,错误偏移量 0x000546a8, 进程 ID 0x%9,应用程序启动时间 0x%10。
    记录时间:2011/1/11 15:37:12 (系统出错时间)
    事件代码: 3005 
    事件消息: 发生了未处理的异常。 
    事件时间: 2011/1/11 15:37:12 
    事件时间(UTC): 2011/1/11 7:37:12 
    事件 ID: 2692cefd2ccf4930b86de8eae12d5a53 
    事件序列: 16 
    事件匹配项: 1 
    事件详细信息代码: 0 
     应用程序信息: 
        应用程序域: /LM/W3SVC/1/ROOT/mis-1-129392049159398147 
        信任级别: Full 
        应用程序虚拟路径: /mis 
        应用程序路径: E:\WebSites\MIS\ 
        计算机名: EBCMSERVER 
     进程信息: 
        进程 ID: 5940 
        进程名: w3wp.exe 
        帐户名: NT AUTHORITY\NETWORK SERVICE 
     异常信息: 
        异常类型: InvalidOperationException 
        异常消息: 无效操作。连接被关闭。 
    请求信息: 
        请求 URL: http://21.15.124.38/mis/Error.aspx?Error=无效操作。连接被关闭。 
        请求路径: /mis/Error.aspx 
        用户主机地址: 10.33.19.207 
        用户:  
        是否已经过身份验证: False 
        身份验证类型:  
        线程帐户名: NT AUTHORITY\NETWORK SERVICE 
     线程信息: 
        线程 ID: 6 
        线程帐户名: NT AUTHORITY\NETWORK SERVICE 
        是否正在模拟: False 
        堆栈跟踪:    在 MIS.DAL.Oracle.ExecuteDataset(CommandType commandType, String commandText, IDbDataParameter commandParameters, String tableName)
       在 MIS.DAL.AbstractDBAccess.ExecuteDataset(String commandText, IDbDataParameter commandParameters)
       在 Mis.EntityFactory`1.ExecuteDataSet(String cmdText, IDbDataParameter commandParameters)
       在 Mis.Business.SelectMenus(String systemid, String userid, String root) 位置 E:\mis\Mis.BLL\Admin.cs:行号 117
       在 Mis.BLL.Menu.SelectMenu(String systemid, String userid, String root) 位置 E:\Mis.BLL\TAdminRmsCd.cs:行号 40
       在 Mis.Business.Frame.Page_Load(Object sender, EventArgs e) 位置 E:\Mis\Frame.aspx.cs:行号 68
       在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       在 System.Web.UI.Control.OnLoad(EventArgs e)
       在 System.Web.UI.Control.LoadRecursive()
       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
     
     
    自定义事件详细信息: 
      

  5.   

    我把Oracle客户端都安装了,还是抱同样的错。windows 2008好麻烦呀。我发现事件查看器里头只要有以下错误,系统就访问不了,
    .NET Runtime version 2.0.50727.3615 - 执行引擎错误(72FD79AE) (80131506)
    出现上面的错误后,再进行其他操作就会出现以下错误:
       错误应用程序 w3wp.exe,版本 7.0.6001.18000,时间戳 0x47919413,错误模块 mscorwks.dll,版本 2.0.50727.3615,时间戳 0x4be902c7,异常代码 0xc0000005,错误偏移量 0x000546a8, 进程 ID 0x%9,应用程序启动时间 0x%10。

        错误应用程序 w3wp.exe,版本 7.0.6001.18000,时间戳 0x47919413,错误模块 ntdll.dll,版本 6.0.6001.18000,时间戳 0x4791a783,异常代码 0xc0000374,错误偏移量 0x000aada3, 进程 ID 0x171c,应用程序启动时间 0x01cbb2414876954e。好像iis把应用程序给关了似的。有人知道是怎么回事不?
      

  6.   

    这个是Oracle服务器设置的问题,Oralce可以设置连接到服务器的客户端一段时间没有响应后自动关闭该连接,如果该客户端被关闭后,需要重新连接,楼主改下服务器设置就可以了,具体设置问题可以去Oracle论坛问下
      

  7.   


    我觉得不太可能吧,我正式环境部署之后怕有问题,就测试机一样连接的是同一台Oracle服务器。
    个人感觉可能是FrameWork出了问题,或者是IIS出了问题,但是就是找不到问题所在。
    主要就是事件查看器中以下这个错误,搞不清楚是什么原因造成的:
    .NET Runtime version 2.0.50727.3615 - 执行引擎错误(729979AE) (80131506)
    以及和
    .NET Runtime version 2.0.50727.3615 - 执行引擎错误(70CD79AE) (80131506)只要出现上述问题,如果想再次访问网站,进行相应操作,进度条一直在缓慢移动,而且花费时间很长,最后就是空白页面。
    接着就是以下错误:
    错误应用程序 w3wp.exe,版本 7.0.6001.18000,时间戳 0x47919413,错误模块 mscorwks.dll,版本 2.0.50727.3615,时间戳 0x4be902c7,异常代码 0xc0000005,错误偏移量 0x000546a8, 进程 ID 0x%9,应用程序启动时间 0x%10。
      

  8.   

    1.你是Web的应用程序,不需要安装Oracle客户端。winForm的程序才需要安装。2.应该是你的代码问题,你的代码:
    MIS.DAL.Oracle.ExecuteDataset(CommandType commandType, String commandText, IDbDataParameter commandParameters, String tableName)
    着方法里面,估计你是直接使用了一个之前打开的Connection或者静态的Connection.你应该在使用之前判断以下Connection是否打开。比如:
    在你的ExecuteDataset方法里面加判断。如:if(XX.State!=ConnectionState.Open)
          XX.Open();
    当然,最后记得关闭。