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

问题描述:

我在Visual Studios 2010中创建了一个dll。我执行了以下步骤:经典的ASP和COM DLL在Server 2008 R2中不起作用(Microsoft VBScript运行时错误'800a01ad'ActiveX组件无法创建对象)

  1. 考虑建立一个密钥对(SNK文件),将它关联强名称

  2. 鉴于每个类的个人ProgId和GUID

  3. 因为它是我确信,一个64位的DLL使用位于'FrameWork64/v4xxxx“文件夹。我用RegAsm.exe /代码库ECE2.dll

  4. 我跑 'GACUTIL -i' 的DLL

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

现在,DLL 在我的笔记本电脑和家用电脑(均运行Windows 7 Ultimate)上正常工作。我现在试图让它在Windows Server 2008 R2上工作。 这是我遇到问题的地方。

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

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

我认为这可能是IIS中需要更改的设置。请注意,此服务器已配置为允许传统ASP页面,所以我知道这不是。 任何人都可以给我任何指示,以确定是否需要在服务器中更改特定设置,或者是否有额外的安全箍需要跳过以使其在Server 2008上工作,而我并不需要这么做Windows 7旗舰版?

+1

在网站下创建一个应用程序目录,放入asp,确保应用程序目录以管理员身份运行(不是通常的iis用户),这有帮助吗? - 这可能是一个安全问题 – Paul 2012-07-07 19:31:57

检查此ASP应用程序运行的应用程序池的高级设置。是否将“启用32位应用程序”设置为True?如果是这样,那么你的问题,你不能实例化一个32位池下的64位DLL。

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

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

+1

我刚花了3个小时试图弄清楚。你非常希望得到你的答案。此设置工作 - 它允许遗留网站使用32位ActiveX组件运行ASP类。 – carrabino 2014-11-25 05:43:56