【问题标题】:Classic ASP and COM debugging经典的 ASP 和 COM 调试
【发布时间】:2011-08-04 20:44:18
【问题描述】:

我继承了一个经典的 ASP 项目和一个与之配套的 VB6 组件 (ActiveX .dll)。

我希望能够通过在我的机器上本地运行该组件来调试它。

我有一台 Windows 7 家庭高级版(64 位)笔记本电脑。

我已经在本地设置了 IIS 7.5(生产运行 IIS5),但是,当我浏览到该站点(本地)时,我得到:

Active Server Pages error '00000000'
Create object failed
?
An error occured while create object 'OBJECTNAME'
Microsoft VBScript runtime error '800a01ae'
Class does't support Automation: 'ID of object in global.asa

我不是服务器专家,所以我没有很多设置 IIS 的经验。我想在本地设置这个项目,这样我就可以使用调试器单步执行 COM 对象。

我需要做什么才能让它运行?

仅供参考:

在 global.asa 我有以下内容:

<object runat="server" scope="session" id="ABC" progid="prjABC.clsABC"></object>

然后在 ASP 中我有以下调用:

if ABC.propertyName = True then

...

在那一行失败了。

【问题讨论】:

  • 确保您已在开发机器上注册了该 COM 组件。

标签: iis com asp-classic activex


【解决方案1】:

听起来您的站点运行的应用程序池配置为 64 位模式(默认)。

通过右键单击池并选择 Advanced Settings 将其切换为 32 位:

Enable 32-Bit Applications 设置为True

您可能还想配置托管管道模式并将其设置为经典,并非所有经典 ASP 应用程序都乐于在集成模式下运行。

【讨论】:

  • 修复了它。我将这两个设置都切换到了您的建议,所以我不知道是哪一个实际做了,或者两者都做了,但是该站点现在在我的本地计算机上运行。对此信息向您表示感谢。这几天我一直在用头撞墙。再次感谢。
【解决方案2】:

如果您需要做的只是调试组件,那么编写一个使用该 COM 组件的 COM 应用程序可能会更容易。特别是如果您有组件的源代码,您可以从您的 vb6 组件项目中启动您的测试应用程序作为您的调试应用程序。

由于它是 VB6,尽管您可能必须设置 XP 虚拟机才能运行 Visual Studio 6.0(我从来没有能够让 6.0 在 Windows 7 上运行)。要么将组件升级到 Visual Studio 2010。

【讨论】:

  • 你提出这个很有趣,因为我只是在考虑如果我不能通过网络让它工作的话,可以作为替代方案。
【解决方案3】:

如果你想在 64 位环境中运行 32 位组件,你可以做到。如上所述将 IIS 设置为允许运行 32 位组件的问题在于,您最终会让所有 iis 都运行 32 位——如果它是网络服务器,则意味着您正在运行的主应用程序是 32 位的,因此会降低速度优势64位机。

要在 64 位 IIS 中运行 32 位组件,您需要将其放入组件服务中。开始->运行->“comexp.msc”运行组件服务。然后向下展开树,直到找到 COM+ 应用程序,然后创建一个新的空应用程序(所有默认设置都照原样)。然后展开该应用程序并右键单击组件,然后单击“新建”组件。安装新组件并选择 DLL。这应该允许 64 位组件只使用 32 位组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-14
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多