代码之家  ›  专栏  ›  技术社区  ›  skolima

尝试在经典ASP中实例化COM对象时间歇性获取0x80070002错误

  •  0
  • skolima  · 技术社区  · 15 年前

    我们有一个经典的ASP页面,它通过COM接口实例化.NET对象。它在很长一段时间内工作正常,但是在周末我们应用了一些Windows更新,它在我们的生产环境中不再可靠地工作。有时是有效的,有时是无效的,而且工作时似乎是随机的。当我们将它们从集群中取出时,它不会在测试环境中失败,甚至在生产服务器上也不会失败(似乎只有在负载下才会失败)。

    错误为“-2147024894-找不到文件或程序集名称fusionengine或其依赖项之一。”转换为十六进制的数字为80070002。

    我们创建了一个非常基本的测试页。它基本上只是实例化对象并调用其上的一个简单属性来显示。

    <%
    On Error Resume Next
    set oFusion = Server.CreateObject("Fusion.Engine")
    %>
    Error: <%=err.Number%> - <%=err.Description%><br>
    [<%=oFusion.DPI%>]<br>
    

    如果检测到错误(间隔1秒10次),我们尝试重新创建对象,但如果一次都不工作,也不会工作10次。

    融合对象非常简单。它只引用System.dll和System.Drawing.dll(它生成图像)。

    1 回复  |  直到 15 年前
        1
  •  0
  •   skolima    15 年前

    问题是我们运行了两个不同版本的.NET(1.1和2.0)。通过确保它们在不同的应用程序池下运行,我们能够使其正常工作。