加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

异常:System.BadImageFormatException,未能加载正确的程序集XX

发布时间:2020-12-14 05:30:03 所属栏目:百科 来源:网络整理
导读:转自:爱符号 http://www.afuhao.com/article_articleId-100_articleGroupId-42.shtml ? 近日需要实现一个导出功能,将数据导出到Excel中,由于以前写过,并且封装成一个类ExcelWriter,但是在调试的时候,出现一个奇怪的异常: 未在本地计算机上注册 Micros

转自:爱符号 http://www.afuhao.com/article_articleId-100_articleGroupId-42.shtml

?

近日需要实现一个导出功能,将数据导出到Excel中,由于以前写过,并且封装成一个类ExcelWriter,但是在调试的时候,出现一个奇怪的异常:

未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序


首先,我可以肯定代码没有问题,所以首先想到的是,我电脑没有安装office,可能会缺少组件,但是细想这个是系统自带的不需要安装office的。

那么区别就是操作系统了,之前没有在win7 32位中测试过,而当前系统是windows 7 x64,回想经常遇到 64位系统,DLL文件位置混乱的问题,于是知道如何解决了。


将“解决方案资源管理器”中,找到当前项目,在它上面右键-属性,然后切换到“生成”选项卡,设置“目标平台”为:x86,并保存。再次编译,应该就可以了。

但是问题紧接着就来了,由于IIS7 默认应用程序池是 64位的ASP.NET,于是异常来了:

异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项


看到这个异常,我估计谁都会头大一阵子,不过还好,由于前面知道要设置为x86,加上以前观察过IIS7关于应用程序池的高级设置,所以这个问题也就简单了。

打开IIS7,在左侧列表中,选中“应用程序池”,然后在右边列表中,选中当前网站所在的程序池,最后点击右侧的链接“高级设置”

找到“启用 32 位应用程序”,将它的值设置为 “True”,并点击“确定”。这样就可以了。

所以在这里可以看出一个问题,DLL(类库)项目生成的平台一般是选择Any CPU的,而最终以x86还是x64运行,取决于运行的载体。EXE程序就是它自己,而网站就是IIS的宿主进程(w3wp.exe,在XP中是aspnet_wp.exe)。


前文提到的ExcelWriter,主要是用于导出数据到Excel,后期会与大家分享。它的同胞兄弟ExcelReader 用于从Excel中导入数据,支持xlsx。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读