【问题标题】:COM object not working after migrating to IIS 7.5迁移到 IIS 7.5 后 COM 对象不工作
【发布时间】:2013-10-27 13:07:06
【问题描述】:

我正在将一个经典的 ASP 应用程序从 IIS6 迁移到 IIS7.5,但我遇到了 COM 依赖问题。

这是有问题的代码

SET o = Server.CreateObject("ClassName")
Response.Write "Returned object: " & TypeName(o) 
result = o.SomeMethod() 

第一行成功,第二行打印“Returned object: ClassName”。

第三行以错误结束

  • 错误:429
  • 来源:提供者
  • 说明:类未注册

我不知道,这是否是 32 x 64 位问题(服务器是 64 位,旧的是 32 位)。但我确实将应用程序池的“启用 32 位应用程序”属性设置为 True。

Server.CreateObject 返回一个对象并且实际失败的是方法调用是否正常?

我们使用 WIX 脚本来注册 COM 类(这部分我没有做任何修改)。 我可以在 Computer\HKEY_CLASSSES_ROOT\Wow6432Node 的注册表中找到我的课程。

我会很感激任何指示,这让我发疯。

【问题讨论】:

    标签: dll com vbscript wix


    【解决方案1】:

    你有一个 ClassName 的实例。对象创建没有错误,TypeName 确认了它。因此,组件已正确注册。

    但是,它是否引用了您调用的方法中使用的另一个组件?您的班级内部似乎出现了一个不受控制的错误。

    【讨论】:

    • 同样的代码在旧服务器上也能运行,所以我认为代码中没有错误。如果我理解正确,您说可能在 SomeMethod 中的某处调用了 Server.CreateObject(xxx) 并且实际上是查找 xxx 失败了?
    • 不完全是。不,没有错误,只是一个未处理的错误。例如,如果您的组件在内部实例化了 Jet 数据库连接,而在您的新服务器中,Jet 组件不可用,则您的组件无法创建连接。如果不处理,错误就会冒泡。
    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2016-01-12
    • 2011-02-25
    • 2010-11-22
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多