经典ASP和COM调试

3
我继承了一个经典的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

它在那一行失败了。

确保在您的开发机器上注册了该COM组件。 - Cole W
3个回答

9
听起来您的站点所在的应用程序池配置为64位模式(默认值)。
通过右键单击池并选择“高级设置”将其切换为32位:
将“启用32位应用程序”设置为“True”。
您可能还希望配置托管管道模式,并将其设置为Classic,因为并非所有Classic ASP应用程序都能在集成模式下运行。

搞定了。我把两个设置都改成了你的建议,所以我不知道哪一个起了作用,或者两个都起了作用,但是现在网站已经在我的本地机器上运行了。非常感谢您提供这些信息。我为此问题苦恼了几天。再次感谢。 - webdad3

1

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

由于它是VB6,您可能需要设置XP虚拟机才能运行Visual Studio 6.0(我从未能够在Windows 7上使6.0工作)。要么升级组件到Visual Studio 2010。


很有趣你提到这个,因为我刚想到如果无法通过网络使其工作,那就可以考虑这个作为替代方案。 - webdad3

0

如果您想在64位环境中运行32位组件,是可以做到的。但是,将IIS设置为允许运行32位组件会导致所有的IIS都以32位运行,这意味着如果它是一个Web服务器,那么您正在运行的主要应用程序是32位的,从而降低了64位机器的速度优势。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接