我正在尝试在Server 2008和IIS 7上部署32位ASP Web应用程序。
我有另一台应用程序正常运行的服务器,但是在这台服务器上,每次我加载调用我的DLL之一的ASP页面时,我得到错误429:ActiveX组件无法在 DLL中创建对象< / em>的
我已尝试过针对此问题在线找到的所有修复程序,包括以下内容: 在应用程序池上启用32Bit应用程序。 从C:\ Windows \ SysWOW64文件夹重新注册DLL(使用RegSvr32)
当我运行SysInternals进程监视器并比较结果时,我注意到的主要事情是在运行正常的机器上,当我加载页面时,dllhost.exe prcoess和w3wp之间存在一个甚至混合的活动。 exe过程。
在失败的服务器中,我看到在成功的服务器中没有进入注册表的调用,包括一些我不知道它们是什么的调用: HKLM \ SOFTWARE \ Wow6432Node \微软\ VBA \显示器 HKCR \ Wow6432Node \界面{6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperDisableTypeLib HKCR \ Wow6432Node \界面{6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperDisableAll HKCR \ Wow6432Node \界面{6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperUser
所有这些调用都是使用dllhost.exe进程完成的。在显示错误页面之前,w3wp.exe进程不会再次进入。
我应该提到这些是两个全新的服务器。我们无法确定它们之间的配置差异。
另外值得一提的是,即使我希望支持这个应用程序,我也无法访问源代码,也无法在任何类型的调试模式下使用断点或类似的东西执行源代码。
我强烈怀疑我们尝试在64位服务器上运行这个32位代码的方式存在某种配置错误,但我不知道如何证明它,或者如何解决它。
谢谢, 比尔
更新: 问题原来是一个需要重新生成的.tlb文件。我公司中很少有人进行C#开发,并且允许查看源代码,很快发现运行应用程序的DLL之一有一个可用的方法。他们掀起了一个VB脚本,调用它来生成文件,一切都恢复正常。
我对Windows开发知之甚少,不知道.tlb是什么或者为什么有效,但故事的寓意是如果你有一个32位的网络应用程序不能运行在64位(也许任何服务器? )Windows服务器因为错误429,好好看看你的.tlb文件。只是不要问我应该找什么。
答案 0 :(得分:1)
您确定已启用IIS以运行32位应用程序吗?
在您的应用程序池上,右键单击并选择“高级设置”
然后在General下确保“启用32位应用程序为”True“
默认情况下,此设置为“False”。
这对我来说也很有用http://support.microsoft.com/kb/177394