首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Excel.Application无法在ASP经典版中打开Excel工作簿

问用Excel.Application无法在ASP经典版中打开Excel工作簿
EN

Stack Overflow用户
提问于 2017-03-27 16:30:04
回答 2查看 3.4K关注 0票数 0

我有一个Windows 2016服务器,我已经安装并激活了Office 2013 64位。

我有一个典型的ASP应用程序,试图像这样打开Excel工作簿:

代码语言:javascript
复制
<%
Set appExcel = CreateObject("Excel.Application")

appExcel.Workbooks.Open("C:\intranet\web\Libro1.xlsx")

%>

我知道微软不鼓励这种办公自动化,但这是一个我继承下来的遗留应用程序,我必须设法让它在Windows 2016上运行。

如果我以VBS脚本的形式执行这段代码,就没有问题,但是如果我尝试将其作为ASP页面执行,则会得到:

错误“800a03ec”无法访问文件'C:\intranet\web\Libro1.xlsx‘。 有几个可能的原因: 文件名或路径不存在。 该文件正被另一个程序使用。(...)

我已经放弃了所有建议的理由,我还检查了如果我真的使用了一个不存在的文件,错误信息是不同的。

我正在以用户"Administrator“的身份运行我的ASP应用程序池(在我的西班牙语安装中管理)。

在组件服务中Microsoft配置条目的所有三个部分中,我都为每个人提供了权限。

我已经检查了我的操作系统和办公包中安装的更新。

我的想法不多了,任何合理的线索都欢迎。

EN

回答 2

Stack Overflow用户

发布于 2017-03-27 23:59:54

关于在IIS中设置网站的建议

建立IIS网站时应考虑的事项

  • 匿名访问帐户
  • 应用池
  • NTFS权限

建立匿名帐户

  • 方法一-使用ApplicationPoolIdentity而不是IUSR ApplicationPoolIdentity是IIS_IUSRS安全组中对应的IIS AppPool\<AppPoolAccounts>之一的特殊术语。

原因是它将安全上下文与应用程序池联系在一起,而不是让匿名帐户以IUSR的形式运行,而将应用程序池作为ApplicationPoolIdentity运行,留下两个安全上下文来管理。

  • 方法二-使用自定义帐户作为应用程序池的标识 有关更多控件,请使用自定义帐户代替应用程序池高级设置中的ApplicationPoolIdentity。借用方法一,匿名帐户应该设置为ApplicationPoolIdentity,因此现在只有一个安全上下文需要管理。 与使用IUSR相比,这种方法的主要好处是您知道自定义帐户的密码,而IIS控制IUSR密码使使用它代替ApplicationPoolIdentity作为应用程序池标识很麻烦。

分配NTFS权限

警告: UAC (用户帐户控制)在"Admin Approval Mode“中运行时可以修改NTFS权限,确保在Computer settings\Windows settings\Security settings\Local policies\Security options下的本地组策略中将User Account Control: Run all administrators in Admin Approval Mode设置为False。

根据向IIS网站添加匿名帐户的方法,应该在网站根文件夹中添加两个帐户中的一个;

  • 方法One - IIS_IUSRS (读取权限)
  • 方法二-自定义帐户(读取权限)

在基本级别上,网站根文件夹应该包含以下权限;

代码语言:javascript
复制
| User Account       | Permission            | Notes
| ------------------ | --------------------- | ---------------------
| Administrators     | Full Control          | For File System access.
| <IIS Anonymous>    | Read & Execute        | Either IIS_IUSRS or a Custom Account.

不要继承权限 建议禁用网站根文件夹上的继承,以停止父权限向下传播和覆盖任何现有权限,这可能是一项代价高昂的恢复工作。

票数 0
EN

Stack Overflow用户

发布于 2017-03-28 08:25:09

最后我发现了问题所在。

按照有关DCOM权限的一些提示,我使用"Components service“工具配置了"Microsoft.Excel”DCOM配置权限。但这还不够。

今天,我看到除了“权限”选项卡外,还有一个"Identity“选项卡。默认情况下,它选择使用“初始用户”,我希望它是运行IIS应用程序池的用户。我已经用一个“真正的”用户执行了这个池,所以我并不认为这是相关的,但是当我更改它并在那里选择一个特定的用户时,一切都开始工作了。

所以总结一下我的解决方案是:

  • 打开“组件服务管理”
  • 在"DCOM Con图“部分找到与"Microsoft.Excel”相关的条目,并右键单击"Properties“。
  • 在"Identity“选项卡中,设置一个”真实“用户,当使用Interop时,该用户将运行Excel。
  • 在“权限”选项卡中,调整权限,以便您在identity选项卡中设置的用户具有所需的权限。

希望这能给任何人一些线索。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43051764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档