oracle11g+ef+vs2013做的项目在部署的时候碰到的问题
2015-07-07 12:31
573 查看
最近公司做一个项目,用到了ef和oracle11g,开发工具用的是vs2013,开发完成后,在本机上完美运行,但是,当到了要到服务器上部署的时候,就出了问题,服务器环境是server08R2,开发环境是vs2010,结果在发布到IIS上之后,运行报了:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。经过排查发现,服务器是64位的,而我装的11g是32位的,所以它默认去到了64位的GAC下找Oracle.DataAccess。这时候我想到了把IIS应用程序池里启用32位应用程序改成True试试,结果这个错消除了,然后又报了另一个错:指定的存储区提供程序在配置中找不到,或者无效。 ---> System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。又折腾了很长时间,经过上网搜索,终于找到了解决的办法,请注意C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config下machine.config下的这句话:<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />注意其中的“invariant="Oracle.ManagedDataAccess.Client”这段,Invariant的意思是相当于在VS2010的开发环境中配置了别名Oracle.ManagedDataAccess.Client,所以你如果没有安装Oracle Data Provider For .Net或者该处的invariant与连接字符串中的provider名字不一样,你就会出现上面的这个错。经过仔细的对比,我发现我的webconfig中一开始provider名字确实和machine.config中的不一样,我把它改成一模一样,然后就成了,不报任何错了。
相关文章推荐
- Oracle数据库如何授权收费(Database Licensing)
- oracle执行select语句需要commit吗
- 三种数据库日期转字符串对比sql server、oracle、mysql(V4.11)
- Oracle 分开执行耗时操作
- Oracle基础维护02-表、主键、索引、表结构维护手册
- Oracle 索引
- 查看Oracle日志情况
- Oracle 面向对象
- 十、oracle 常用函数
- oracle中if/else功能的实现的3种写法
- ORACLE 10046 TRACE
- ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener解决方法
- Oracle数据库启动命令dbstart没有反应
- 查询Oracle字符集
- readline与rlwrap的安装
- 如何在Oracle中建立表和表空间?
- Oracle使用存储过程下载Blob大对象
- Oracle中instr函数使用方法
- Oracle 表被其他的 过程/视图 引用
- 使用ORACLE在线重定义将普通表改为分区表