起因:本地32位系统,oracle为10g,要部署到64系统oracle 11g的服务器上,后台与前台都要部署上去。
经过:一开始直接在本地调试后台程序,然后直接复制到了服务器上,结果报错: Unable to load DLL 'OraOps10.dll': 找不到指定的模块。
后来得知是因为Oracle.DataAccess.dll的版本不正确,网上下载了 Oracle.DataAccess.dll(11g),(备注:因为用 到了批处理,所以要用oracle的dll库 )
生成后台程序,生成时选择anycpu即可,复制到服务器运行正常,当我用同样道理把前台发布到服务器上,结果 报错了:
Message:试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B) 还有 Message:The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception.
这期间我修改了iis应用池中的启用32位应用程序:true,虽然网页可以显示,但是依然连接不了数据库,所以还是要改回false,也就是该应用为64位程序,同事和我说 是CPU版本不对报出 的错误,我想了一下 有可能是 Oracle.DataAccess.dll 版本不对(后台却可以运行,吐血中。。),我找到了服务器上的
D:\app\Administrator\product\11.2.0\dbhome_1\ODP.NET\bin\2.x\ Oracle.DataAccess.dll 重新添加到前台程序 中,生成然后发布,把一切正常了,