IIS中的Excel workbook.saveas

时间:2015-04-20 19:03:39

标签: asp.net vb.net excel-vba iis-8.5 vba

我在IIS中发布Web应用程序时遇到问题

有时WorkBook.SaveAs方法工作正常,有时不工作。

  

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Runtime.InteropServices.COMException:远程过程调用失败。 (HRESULT异常:0x800706BE)

来源错误:

    workbook.Saved = True
    workbook.SaveAs(Server.MapPath("~/MyFolder/Excel.xlsx"))
    workbook.Close()
    APP.Quit()

有时错误发生在APP.Quit

1 个答案:

答案 0 :(得分:0)

首先要注意的是,由于许可和稳定性/可靠性问题,Microsoft的办公室互操作 not supported server side

  

Microsoft目前不推荐,也不支持,   任何无人值守的Microsoft Office应用程序的自动化,   非交互式客户端应用程序或组件(包括ASP,   ASP.NET,DCOM和NT服务),因为Office可能会出现不稳定   Office在此环境中运行时的行为和/或死锁。

但是,许多人这样做/尝试这样做,并遇到类似的问题。通常,这似乎是由权限问题(安全上下文和DCOM安全配置)引起的。已经描述了不同的潜在解决方案,例如

  • How to make IIS7 play nice with Office Interop使用2种不同的解决方案,其中一种在其他地方被多次提及:

      
        
    1. 打开Windows资源管理器
    2.   
    3. 取决于您是否安装了32位或   64位版本的办公室你需要做一个(或两个)的   以下:   
          
      • 32位Office安装:导航到   C:\ Windows \ System32 \ config \ systemprofile
      •   
      • 64位Office安装:
      •   
    4.   
    5. 导航至C:\ Windows \ SysWOW64 \ config \ systemprofile
    6.   
    7. 验证文件夹   "桌面"存在(如果它不存在则创建它)
    8.   
    9. 右键单击>属性
    10.   
    11. 在安全选项卡上:添加网站所在的帐户   正在运行(例如:网络服务),具有默认权限(Read&   执行;列出文件夹内容;读取)
    12.   
  • RPC failure opening an excel document.列出以下解决方案: 在“运行”中键入Dcomcnfg.exe,打开dcomconfig实用程序。

      

    在dcomconfig实用程序中,

         

    转到组件服务 - >计算机 - >我的电脑 - > DCom配置    - > Microsoft Excel应用程序(和Powerpoint)

         

    右键单击它并转到属性。转到安全选项卡。下   安全

         

    1)推出&激活权限 - >选择自定义并单击   编辑。添加用户网络服务并检查允许下的所有内容   它

         

    2)对访问权限和配置权限执行相同的操作。

         

    然后单击“应用”并关闭所有内容。

  • Another one using Windows Server 2003,使用不同的解决方案

      

    事实证明,COM有某种许可   需要对象。在Win2003上设置AppPool(用于站点)   服务器到" SYSTEM"解决了这个问题。对于一些reasion(默认)   ASPNET帐户拥有COM对象的权限   试图访问。

也许其中一种解决方案适合您。

它有时适合您而不是其他时间的原因可能与特定excel文件的内容有关,例如:它是否包含任何VBA脚本或引用任何(特定)模块。所以这是你应该考虑的事情。