经典ASP和COM DLL在Server 2008 R2中不起作用(Microsoft VBScript运行时错误'800a01ad'ActiveX组件无法创建对象)

时间:2012-07-07 16:11:14

标签: dll com asp-classic activex windows-server-2008-x64

我在Visual Studios 2010中创建了一个dll。我执行了以下步骤:

  1. 通过将密钥对(snk文件)与其关联来构建强名称

  2. 给每个班级一个单独的ProgID和GUID

  3. 由于它是64位DLL,我确保使用位于' FrameWork64 / v4xxxx'中的RegAsm.exe。夹。我使用了RegAsm.exe / codebase ECE2.dll

  4. 我跑了' gacutil -i'关于DLL

  5. 所有这些步骤都取得了成功。我正在使用的DLL和ASP页面存储在intetpub / wwwroot中。

    现在,我的笔记本电脑和家用电脑上的DLL 正常运行(两者都运行Windows 7旗舰版)。我现在正试图让它在 Windows Server 2008 R2 上运行。 这就是我遇到问题的地方。

    我完成了与上面相同的步骤,所有这些都是成功的。但是,当我运行ASP页面时,我收到一条错误消息,表明它尚未注册,即使它有:

      

    Microsoft VBScript运行时错误' 800a01ad' ActiveX组件不能   创建对象:' ECE2.CSV_DataSet'

    我认为它可能是IIS中需要更改的设置。请注意,此服务器已配置为允许经典ASP页面,所以我知道不是这样。 任何人都可以告诉我是否有一个特定的设置我需要在服务器中更改,或者是否有额外的安全箍我必须跳过才能让它在Server 2008上工作我不需要做在Windows 7旗舰版上?

1 个答案:

答案 0 :(得分:9)

检查此ASP应用程序运行的应用程序池的高级设置。是否将“启用32位应用程序”设置为True。如果是这样那么你的问题就是你无法在32位池下实例化64位dll。

你有没有理由认为这是一个“64位dll”而不是简单的“任何CPU”?如果没有regasm它也可以用作32位dll。

否则,您将需要在没有“启用32位应用程序”的情况下运行此ASP应用程序,以便它以64位运行,但之后可能有一个原因设置在第一位。因此,下一步是创建一个没有此设置的新应用程序池,并将ASP的一部分作为此池中的单独应用程序运行。