您的位置:首页 > 数据库 > Oracle

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中的不一样,我把它改成一模一样,然后就成了,不报任何错了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: