项目的调试环境为Windows 7 x64专业版+vs2010+Oracle 11g x64,以前的运行环境不明,应该是运行在32位系统下。
调试中出现的问题:
1. 无法解析制定的字符串。
1.1 在使用PL/SQL时如果版本不对的话会产生这个问题。PL/SQL只有32位的,所以连接64位的数据库需要对oci.dll文件进行设置,这个可以从网上下载32位的oci.dll。在PL/SQL中选择Tools->preferences,在OCI library中填入32位oci.dll地址(PL/SQL并非必须)。
1.2 tnsnames.ora文件配置不正确。
1.3 Oracle对路径比较敏感不能带有括号(重要)。这个问题比较复杂。此时的情况是数据库已经可以连接,在vs中也可以直接连接数据库,项目部署在IIS中也可以使用,只有在调试程序的过程中会产生这个问题。原因在于vs2010在调试过程中会调用C:\Program Files(x86)\Common Files\Microsoft Shared\Devserver\WebDevServer.exe。百度上的解决方法过于麻烦,而且我自己试了一下并没有用。我的解决方法是先在IIS中部署网站,然后在网站的属性页->启动选项中,服务器选择使用自定义服务器,url填写服务器地址。这样就可以在调试中连接数据库了。
2. OCIENVCreate失败,返回代码为-1。
通常原因是权限不够,需要以管理员的身份运行vs2010。
3. 定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节。
选择应用程序池的.NET Framework版本选择v2.0。
4. 未能加载文件或程序集"System.Data.OracleClient"或它的某一个依赖项。
原因是引用的System.Data.OracleClient.dll的版本是2.0,32位。解决方法是在应用程序池中选择使用的应用程序池的高级设置,在启用32位程序中选择True。