2013-10-18 74 views
0

我正在将经典的ASP应用程序从IIS6移动到IIS7.5,并且遇到了COM依赖关系问题。迁移到IIS 7.5后COM对象无法工作

这是有问题的代码

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

第一行成功,则第二行打印“返回对象:类名”。

第三行以错误结束

  • 错误:429
  • 来源:供应商
  • 描述:类没有注册

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

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

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

我会很感激任何指针,这让我疯狂。

回答

0

你有一个ClassName的实例。在创建对象和TypeName时没有错误来确认它。所以,该组件被正确注册。

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

+0

相同的代码在旧服务器上工作,所以我不认为代码中存在错误。如果我正确理解你,你说可能有Server.CreateObject(xxx)调用somemethod内的某个地方,这是xxx的查找实际上失败? –

+0

不完全。不,没有错误,只是一个未处理的错误。例如,如果组件内部实例化Jet数据库连接,并且在新服务器中Jet组件不可用,则组件无法创建连接。如果没有处理,错误会冒出来。 –

相关问题