我在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
上答案 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种不同的解决方案,其中一种在其他地方被多次提及:
- 打开Windows资源管理器
- 取决于您是否安装了32位或 64位版本的办公室你需要做一个(或两个)的 以下:
- 32位Office安装:导航到 C:\ Windows \ System32 \ config \ systemprofile
- 64位Office安装:
- 导航至C:\ Windows \ SysWOW64 \ config \ systemprofile
- 验证文件夹 "桌面"存在(如果它不存在则创建它)
- 右键单击>属性
- 在安全选项卡上:添加网站所在的帐户 正在运行(例如:网络服务),具有默认权限(Read& 执行;列出文件夹内容;读取)
醇>
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脚本或引用任何(特定)模块。所以这是你应该考虑的事情。