我正在IIS7中部署一个ASP.NET MVC3应用程序。 我已经部署了其他应用程序,但是他们从未使用App_Data文件夹或任何其他组件(如Interop库)。
我使用了一键式部署,我起诉了默认的应用程序池。 当我启动应用程序时,我立即得到一个错误,指出:
[networking访问] 抱歉,处理您的请求时发生错误。
[从IIS7浏览] 无法findpath'D:\ Data \ Apps \ OppUpdate \ App_Data \ Test.xlsx'的一部分。
然后我手动添加部署目录中的App_Data文件夹,并定期启动应用程序。 然后说到使用Interop库的taks,我得到以下错误:
[networking访问] 抱歉,处理您的请求时发生错误。
[从IIS7浏览] 检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。
使用1次点击部署时,有没有办法自动添加App_Data文件夹? 我如何注册Interop服务?
谢谢,
弗朗切斯科
显然,问题与Server 2008相关联。要在服务器端执行的Excel应用程序触发MS OS中现在存在的安全popup窗口,例如Win 7和Vista。 这是用户每次运行应用程序时都会看到的对话框,并警告他们有关不可信的应用程序可能给PC带来的损害。 显然,当应用程序(在本例中为Excel)由另一个应用程序(在本例中是一个Web应用程序)运行时,该对话框不会popup,服务器也不会获得运行Excel的授权。
Microsoft IIS和Excel中令人震惊的BUG解决scheme非常棒:
创build目录“C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop”为目录桌面设置完全控制权限(例如在用户“IIS AppPool \ DefaultAppPool”的Win7&IIS 7&DefaultAppPool设置权限中)
来源: http : //forums.iis.net/t/1148371.aspx
您不应该在multithreading环境(如Web应用程序)中使用COM Office interop。
尝试使用可以读取和写入excel文件的库。 (对于.xlsx)
http://epplus.codeplex.com/
或Excellibrary(对于.XLS) http://code.google.com/p/excellibrary/
请注意,ExcelLibrary(不是epplus)有一个错误,使得工作表less于50个工作表(4096字节的缓冲区错误)。
NPOI写错误的XLS文件,但由于它是一个Java端口,阅读.xls文件与它(ExcelLibrary阅读是没有错误的)不太舒服。
http://npoi.codeplex.com