繁体   English   中英

IIS内的Excel workbook.saveas

[英]Excel workbook.saveas inside IIS

在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上

首先要注意的是,由于许可和稳定性/可靠性问题,Microsoft 不支持 Office interop 服务器端

Microsoft当前不建议也不支持任何无人参与的非交互客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT Services)中的Microsoft Office应用程序自动化,因为Office可能表现出不稳定的行为和/在此环境中运行Office时出现死锁或死锁。

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

  • 如何使IIS7与Office Interop配合使用具有两种不同的解决方案,其中一种在其他地方多次提到:

    1. 打开Windows资源管理器
    2. 根据您安装的是32位还是64位版本的Office,您需要执行以下一项(或两项):
      • 32位Office安装:导航到C:\\ Windows \\ System32 \\ config \\ systemprofile
      • 64位Office安装:
    3. 导航到C:\\ Windows \\ SysWOW64 \\ config \\ systemprofile
    4. 验证文件夹“桌面”是否存在(如果不存在,请创建它)
    5. 右键单击>属性
    6. 在安全选项卡上:添加具有默认权限(读取和执行;列出文件夹内容;读取)的运行网站的帐户(例如:网络服务)
  • RPC失败,打开了一个Excel文档。 列出以下解决方案:在“运行”中键入Dcomcnfg.exe,这将打开dcomconfig实用程序。

    在dcomconfig实用程序中,

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

    右键单击它,然后转到属性。 转到安全选项卡。 在安全之下

    1)启动和激活权限->选择自定义,然后单击编辑。 添加用户网络服务,并检查“允许”下的所有内容。

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

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

  • 另一种使用Windows Server 2003的解决方案

    事实证明,COM对象需要某种许可。 将Win2003服务器上的AppPool(用于站点)设置为“ SYSTEM”可以解决此问题。 对于某些用途(默认情况下),ASPNET帐户有权访问任何COM对象尝试访问的内容。

这些解决方案之一可能会为您服务。

它有时对您有用而不是在其他时间不起作用的原因可能与特定excel文件的内容有关,例如,它是否包含任何VBA脚本或引用任何(特定)模块。 所以这是您应该研究的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM