【问题标题】:Getting error '80070002' from COM .dll从 COM .dll 获取错误“80070002”
【发布时间】:2013-02-14 19:05:36
【问题描述】:

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

函数 getProfileFromLdap(user, pw){

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 位应用程序”的应用程序池设置为 true 两种新环境

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

我不确定我错过了什么!

【问题讨论】:

    标签: c# javascript .net com


    【解决方案1】:

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

    • 以管理员身份打开命令提示符
    • 导航到 dll 的存储位置
    • 使用注销 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 /代码库
    • 您会收到 regasm 警告,但还会收到消息“Types 注册成功”

    之后我不再收到错误消息!

    【讨论】:

      【解决方案2】:

      一般HRESULT 80070002 表示“未找到文件”。

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

      另请参阅this thread,了解有关手动注册 COM 服务器的一些提示。

      【讨论】:

        猜你喜欢
        • 2010-11-03
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 2014-12-24
        • 1970-01-01
        相关资源
        最近更新 更多