Oracle 使用记录,无效操作,连接已被关闭 20200510
1
今天在医院部署webservice,需要使用oledbConnection连接Oracle数据库
服务器环境 win2008 + iis;
数据库服务端Oracle10g;
本机测试没有问题,但是在服务器部署之后,webservice调用异常,但是没有提示,判断是连接数据库出错
之后在服务器上安装VS2010 开发工具,使用代码调试,发现在连接数据库时,提示 :
无效操作,连接已关闭
在 System.Data.ProviderBase.DbConnectionClosed.get_ServerVersion()
在 System.Data.OleDb.OleDbConnection.get_ServerVersion()
解决办法:
下载一个installclient11_1,并且设置环境变量,在path中将oracle环境指向installclient11_1路径,测试可以正常连接。
2
解决连接问题之后,调试程序可以正常取数据,之后发布并部署。运行时程序崩溃,提示 w3wp.exe [2324] 中发生了未经处理 win32 异常,并且跳出窗口提示打开vs进行调试,调试时又会提示内存读写冲突。
开始以为是iis 网站权限问题,添加权限后依然提示错误。
打开VS2010 在webservice项目属性中找到web项,将程序调试运行改为本地IIS,并且设置虚拟目录。
继续调试运行,程序报错,在连接数据库时提示:
System.StackOverflowException
栈溢出,目前尚未解决
后续:已经完成,忘了写了,犯了两个错误
(1)数据库连接语句写错了;
(2)在错误日志中调用了数据库时间。当数据库连接失败需要写日志时,需要先连接数据库获取时间,但是数据库连接不上,再次写日志,造成无限递归。