经典的ASP和COM调试

时间:2011-04-13 16:04:34

标签: iis com asp-classic activex

我继承了一个经典的ASP项目和一个随附的VB6组件(ActiveX .dll)。

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

我有一台Windows 7 Home Premium(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对象。

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

就像一个FYI:

在global.asa中,我有以下内容:

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

然后在ASP中我有以下电话:

if ABC.propertyName = True then

...

它失败了。

3 个答案:

答案 0 :(得分:8)

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

右键单击池并选择Advanced Settings

将其切换为32位

enter image description here

Enable 32-Bit Applications设为True

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

答案 1 :(得分:1)

如果您只需要调试组件,则可以更轻松地编写使用此COM组件的COM应用程序。特别是如果您拥有组件的源代码,则可以从vb6组件项目中启动测试应用程序作为调试应用程序。

因为它是VB6,但你可能需要设置一个XP虚拟机才能运行visual studio 6.0(我从来没能在6.0上运行6.0)。或者将组件升级到visual studio 2010.

答案 2 :(得分:0)

如果要在64位环境中运行32位组件,则可以执行此操作。设置IIS以允许运行32位组件的问题是你最终让所有iis运行32位 - 如果它是一个网络服务器意味着你正在运行的主应用程序是32位,所以降低了速度优势64位机器。

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