2011-07-28 96 views
0

可否帮助我,将运行在Win Server 2003 32位中的此应用程序迁移到Win服务器时,我的ASP.NET应用程序无法导入Excel文件2008年的64位环境。 如何解决这个错误?因为在Win Server 2003 32位中,它运行正常。在Win Server 2008 64位运行时出现ASP.NET应用程序错误64位

出现的错误报告是: * System.Runtime.InteropServices.COMException(0x800A03EC):从HRESULT异常:0x800A03EC在Microsoft.Office.Interop.Excel.Workbooks.Open(字符串文件名,对象UpdateLinks,对象只读,Object格式,对象密码,对象WriteResPassword,对象IgnoreReadOnlyRecommended,对象来源,对象分隔符,对象可编辑,对象通知,对象转换器,对象AddToMru,对象本地,对象CorruptLoad)在Admin_ImportRisk.CreateTempTable()在C:\ inetpub \ wwwroot \ ERMApproval \管理员\ ImportRisk.aspx.vb:线66 *

在我的申请的第66行的代码是: oBooks.Open(使用Server.Mappath( “〜/ App_Data文件/ Risk.xls”))

我尝试了好几种方案:

  1. 添加的网络服务用户在DCOM配置Microsoft Excel应用程序,并设置在以前是同一应用程序池的身份。

  2. 将所有类型的用户添加到Microsoft Excel应用程序和我的计算机中以安全的DCOM配置。我也在应用程序的文件夹中添加了许多类型的用户。

  3. 二手corflags.exe迫使32位应用程序以在64位的环境中运行

  4. 用于REGSVR32.EXE到Microsoft.Office.Interop.Excel.dll文件注册到窗口32位组件服务。

  5. 二手RUNDLL32.EXE运行32位Microsoft.Office.Interop.Excel.dll文件中的32位环境

但结果还是一样。 如果你能帮助我,这将是一大荣誉^^。 此致敬礼, -imanuel-

回答

0

简单的答案是编译您的项目只针对x86。这是项目设置中的一项设置。所以.net框架只会在运行时生成一个32位应用程序,而不是默认为64位。这与设置corflags没有什么不同,但是如果你有多个程序集,你会确保它完成所有的程序。应用程序本身只能定位32位。

您使用的COM组件是32位,而您不能在64位应用程序中这样做,所以强制它为32位。

您还可以强制IIS在32位环境中运行它作为记录在这里:

http://lostechies.com/gabrielschenker/2009/10/21/force-net-application-to-run-in-32bit-process-on-64bit-os/

此外,确保Excel的64位版本未安装在服务器上,而是32位版本。

+0

Thx为答案^^,但我已尝试上个月给你的链接。但它仍然没有效果。该项目设置是不是只发生在桌面应用程序?我的应用程序是一个ASP。NET网络应用程序,因此没有项目设置可以设置。有关更多信息,我已将我的应用程序使用的应用程序池设置为在32位环境中运行,但它仍然相同 –

相关问题