IIS7 上的 ASP Classic 无法创建 COM 对象

Posted

技术标签:

【中文标题】IIS7 上的 ASP Classic 无法创建 COM 对象【英文标题】:ASP Classic on IIS7 Cannot create COM Object 【发布时间】:2010-11-19 08:43:18 【问题描述】:

尝试在 asp 中创建 com 对象时出现权限被拒绝错误。 com 对象是一个已注册的 VB6 dll。 Procmon 不显示任何权限错误。我已将包含 dll 的文件夹的权限授予 AppPool 用户和身份验证用户 (IUSR)。我注意到有一些人遇到这个问题没有明确的解决方案。请帮忙!!

【问题讨论】:

哪个操作系统,32 位还是 64 位? 【参考方案1】:

首先您应该检查的是您分配给文件夹的权限是否已级联到 dll。我见过一些这样的情况,其中 dll 有自己独立的 ACL,而不是从其文件夹中继承任何内容。

【讨论】:

我已经检查并且 dll 具有所需的权限。奇怪的是,ProcMon 没有报告任何权限错误。 @yuben:尝试在 VB6 中创建一个什么都不做的类,看看是否可以实例化。我想知道 COM 对象的构造(即在 VB 代码中)是否由于权限而失败。【参考方案2】:

感谢您的回复。我现在有这个工作。它与从 VB6 dll 调用的另一个 COM dll 有关。但是,我曾经能够从 ASP/IIS6 进入 VB6,但现在再次失败并出现权限错误。我将为此发布另一个问题。谢谢。

【讨论】:

【参考方案3】:

在 procmon 中,你能看到成功读取 HKLM\Software\Classes\CLSIDYOUR_COMPONENT_CLASS_ID 吗?

也许您在与您的组件关联的注册表项中的权限存在问题。

有关所涉及的注册表项列表,请参阅msdn docs。

最好的

【讨论】:

以上是关于IIS7 上的 ASP Classic 无法创建 COM 对象的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 7.5 上运行 ASP Classic

ASP Classic 页面停止工作

ASP Classic 中的事务问题

IIS7web服务器调试ASP.net程序遇到的一些故障的解决办法

IIS7 中的 DefaultAppPool 和 Classic .NET AppPool 有啥区别?

IIS 7开发与管理完全参考手册(第一章部分内容)