随笔 - 28  文章 - 0  评论 - 1  阅读 - 21971

关于oracle32位64位组件运行问题

       前两天遇到一个问题,oracle64位客户端,64位服务器,然后我写了一个C/S模式的小程序,部署到服务器上,运行到连接数据库并从数据库提取数据时,提示什么“加载oracle客户端库时引发BadImageFormatException”32位64位的问题,果断感觉是编译的问题,把编译模式改为AnyCpu,然后又遇到了引用相关dll不是64位,无法加载运行的问题,然后去重新编译了64位的dll组件。ok,一切正常了。

       可是,今天又无语了,同样的部署环境,同样的客户端调用连接以及操作数据库的方法,我还是用AnyCpu模式编译的,然后又出了这oracle32位64位的问题。当时就无语了,感觉这怎么可能呢,理了理思路,因为这次部署的是一个B/S模式的程序,出这样的问题一定是因为B/S和C/S程序不同的地方除了问题。那么,哪里不同呢,我想到了IIS这个家伙,然后在网上查了下资料,哈哈,果然是这个家伙在搞鬼,我果断找到IIS中的“应用程序池设置”,将“启用32位应用程序”改为false,OK,一切正常了。其实,回头想下,根本原因还是自己没有理解IIS中的“启用32位应用程序”,刚开始理解的是“开启了这玩意,那么运行的时候不管是32位的和64位的,都会通吃”,结果证明,是自己太天真了。其实,“启动32位应用程序”的话,会直接导致你的应用程序池是以32位模式运行的,这样,要调用64位服务器下的64位oracle肯定会报错!mark一下,争取不再 犯同样的错误。

      ps:感觉需要好好思考下软件设计方面的问题,以前不觉得这多么重要,但是现在越来越感觉到软件设计还有对系统全局把握的重要性。设计的好,直接提供了几个便利:1.写代码时思路特别清晰,错误率低,调试和自测时会特别顺畅。2.为什么要有面向对象?我记得有这么一句话“面向对象的软件设计思路可以用来支持大型系统的设计,负责维护会变得相当艰难”,现在终于感受到了,封装,继承,多态短短的六个字中包含了多少的精华思想和经历。设计的好坏直接决定了你系统的可扩展性和可维护性。

          还有,对日志文件的理解今天也有了更进一步的提升,日志文件真的很重要。是一种凭证,证明你确实做过了某些事情;也同时是一个很好的调试助手,帮助你发现错误出现的地方。

 

posted on   梦回大唐吟诗篇  阅读(547)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示