【问题标题】:Classic ASP and COM DLL Does not work in Server 2008 R2 (Microsoft VBScript runtime error '800a01ad' ActiveX component can't create object )经典 ASP 和 COM DLL 在 Server 2008 R2 中不起作用(Microsoft VBScript 运行时错误“800a01ad”ActiveX 组件无法创建对象)
【发布时间】:2012-07-07 18:18:08
【问题描述】:

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

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

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

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

  4. 我在 DLL 上运行了“gacutil -i”

所有这些步骤都已成功。我使用它的 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终极?

【问题讨论】:

  • 在网站下建立一个应用程序目录,把asp放进去,确保应用程序目录以管理员身份运行(不是一般的iis用户),有帮助吗? - 这可能是一个安全问题

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


【解决方案1】:

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

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

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

【讨论】:

  • 我只花了 3 个小时试图弄清楚这一点。你对你的回答非常满意。此设置有效——它允许旧站点运行带有 32 位 ActiveX 组件的 ASP 类。
猜你喜欢
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 2018-04-12
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多