1

我正在将经典 ASP 站点从 Windows 2000 服务器移动到 Windows 2008(开发和产品)。我有一个在 .NET 1.1 中创建的 .dll。当在位于此 securityUtility.asp 中的 JScript 中创建的函数使用 dll 创建 ActiveXobject 时,会发生该错误。该行如下所示:

函数getProfileFromLdap(用户,密码){

var aClass, aProfile

aClass = new ActiveXObject("com.co.comp.security.ldap.LDAPLogin"); ... }

发生的错误是:错误 '80070002' E:\SITES\WWW-COMPANYSITE-COM\SITE\BINS../../siteInc/securityUtility.asp,第 850 行

我已经运行以下命令在注册表中注册 dll:

"C:\Windows\Microsoft.NET\Framework\v1.1.4322\RegAsm" coSecurity.dll /tlb:coSecurity.tlb

我不知道这是否值得一提,但有一次,当我试图将网站移至生产环境时,该网站在开发中运行良好,但出错了。很久以前,我已将该站点移至新的开发服务器(Windows 2008)。我已经做了笔记,所以当我将它投入生产时,我知道我采取了哪些步骤。我想也许我忘了记录一个步骤,所以为了追溯我所做的,我卸载了 .dll 并完成了我记录的步骤。它现在在开发中被打破,但在某一时刻它正在工作。

我不确定值得一提的另一件事是该站点是新开发服务器上的第一个站点。.NET 1.1 在任何其他框架之前安装。4.0 和 2.0 是事后安装的。在 prod 服务器上,首先安装了 4.0,然后安装了 1.1。不确定这是否重要。

  • 当开发站点工作时,我确认这些项目在注册表中,将它们与旧产品、新开发服务器和新产品进行比较

  • 在旧的生产服务器上,GAC 中没有任何内容


  • coSecurity.dll 与securityUtility.asp (代码所属的页面)在同一个文件中。

  • 两个新环境的应用程序池都具有“启用 32 位应用程序”

  • “每个人”都被授予对 .dll 的完全权限

我不确定我错过了什么!

4

2 回答 2

1

这就是我最终为那些像我一样用头撞墙的人所做的:

  • 以管理员身份打开命令提示符
  • 导航到 dll 的存储位置
  • 使用 "C:\Windows\Microsoft.NET\Framework\v1.1.4322\RegAsm" /u coSecurity.dll 取消注册 dll
  • 使用 "C:\Windows\Microsoft.NET\Framework\v1.1.4322\RegAsm" coSecurity.dll /codebase 重新注册 dll
  • 你会得到一个 regasm 警告,但也应该得到消息“类型注册成功”

之后我不再收到错误!

于 2013-02-15T16:52:52.753 回答
0

通常HRESULT 80070002意味着“未找到文件”。

我的猜测是您缺少依赖项。尝试使用Dependency Walker来查看是否应该包含任何依赖项。

另请参阅此线程以获取有关手动注册 COM 服务器的一些提示。

于 2013-02-14T19:31:25.893 回答