第一个项目做完了,交付给测试进行测试,碰到一堆问题,当然不是程序上的,而是环境上的!
这个项目是用 EF 5 + MVC5 + Oracle 11 开发的。
驱动用的是 Oracle.ManagedDataAccess ,本地WIN7/8.1运行一点问题都没有。今天下午打包到 WIN 2008 上,解决了一堆环境问题后,一个大难题出现了:
Could not load file or assembly 'Oracle.ManagedDataAccessDTC.dll',什么 PSPManager..ctor 之类的
出现这个问题是因为某些地方用了 TransactionScope 。
把驱动卸掉,重装了N回,重启了N回,于事无补。
把这个DLL放到 Bin 下,运行网站直接就报错,还是无法加载。
Oracle 官方文档中只说不要直接引用这个DTC.dll ,会由 ManagedDataAccess 自动去调用,要区分 32位和64位,其它的基本没提。
GOOGLE上、BING上可以搜到几个相关的贴子,但是都是没有结果。度娘就更不用提了。
跟据报的那什么 PSPManager..Ctor 用反编译工具查看了一下,跟本就没有那个类。
不过有个 Microsoft.VisualC 的引用。
本地GAC (C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualC)下有个11.0.xxx 版本的,
对照那台测试服务器,发现只有个8.XXX的版本。
尝试把本地的考过去,运行结果一样,没有用处。
眼看加班都3个半小时了,加上一下午时间,都整了快8个小时,还没整好这玩意,心里急的冒火。
顺手搜了一下C++运行库,下了个64位的
http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13523
安装,重启网站,在测试,通过!