IIS和64位Windows Server 2008中的错误429

时间:2021-02-26 20:34:11

I am trying to deploy a 32bit ASP web app on Server 2008 and IIS 7.

我正在尝试在Server 2008和IIS 7上部署32位ASP Web应用程序。

I have another server where the app is running fine, but on this server, every time I load the ASP Page that calls one of my DLL's I get Error 429: ActiveX component can't create object in DLL.

我有另一台服务器运行良好的服务器,但在这台服务器上,每次我加载调用我的DLL之一的ASP页面我得到错误429:ActiveX组件无法在DLL中创建对象。

I have tried all of the fixes I have found online for this problem, including the following: Enable 32Bit applications on the app pool. ReRegister the DLL's (using RegSvr32) from the C:\Windows\SysWOW64 Folder

我已尝试在线找到此问题的所有修复程序,包括以下内容:在应用程序池上启用32Bit应用程序。从C:\ Windows \ SysWOW64文件夹重新注册DLL(使用RegSvr32)

When I run the SysInternals Process Monitor and compare the results, the main thing I notice is that on the machine that runs properly, when I load the page there is an even mix of activity between the dllhost.exe prcoess and w3wp.exe process.

当我运行SysInternals进程监视器并比较结果时,我注意到的主要事情是在正常运行的机器上,当我加载页面时,dllhost.exe prcoess和w3wp.exe进程之间存在均匀的混合活动。

In the server that fails I see calls to the registry that aren't getting made in the successful server, including a few that I don't have any idea what they are: HKLM\SOFTWARE\Wow6432Node\Microsoft\VBA\Monitors HKCR\Wow6432Node\Interface{6F255EB7-E73A-4579-B0EC-045FBC00992D}\InterfaceHelperDisableTypeLib HKCR\Wow6432Node\Interface{6F255EB7-E73A-4579-B0EC-045FBC00992D}\InterfaceHelperDisableAll HKCR\Wow6432Node\Interface{6F255EB7-E73A-4579-B0EC-045FBC00992D}\InterfaceHelperUser

在失败的服务器中,我看到在成功的服务器中没有进入注册表的调用,包括一些我不知道它们是什么:HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VBA \ Monitors HKCR \ Wow6432Node \ Interface {6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperDisableTypeLib HKCR \ Wow6432Node \ Interface {6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperDisableAll HKCR \ Wow6432Node \ Interface {6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperUser

And all of these calls are made using the dllhost.exe process. The w3wp.exe process doesn't come in again until it's time to present the error page.

所有这些调用都是使用dllhost.exe进程完成的。在显示错误页面之前,w3wp.exe进程不会再次进入。

I should mention that these are two brand new servers. We have not been able to identify the configuration difference between them.

我应该提到这些是两个全新的服务器。我们无法确定它们之间的配置差异。

Also worth mentioning, even though I am expected to support this app, I have no access to source code, and cannot execute the source in any kind of debug mode with break points or anything like that.

另外值得一提的是,即使我期望支持这个应用程序,我也无法访问源代码,也无法在任何类型的调试模式下使用断点或类似的东西执行源代码。

I strongly suspect that there is some sort of configuration error with the way we are trying to run this 32bit code on a 64bit server, but I am out of ideas for how to prove it, or leads on how to fix it.

我强烈怀疑我们尝试在64位服务器上运行这个32位代码的方式存在某种配置错误,但我不知道如何证明它,或者引导如何解决它。

Thanks, Bill

比尔,谢谢

UPDATE: The problem turned out to be a .tlb file that needed to be regenerated. Some of the few people in my company that do C# development and are allowed to look at source code found pretty quickly that one of the DLL's that runs the app had a method available to do it. They whipped up a VB script that called it to generate the file and everything was up and running again.

更新:问题原来是一个需要重新生成的.tlb文件。我公司中很少有人进行C#开发并被允许查看源代码,很快发现运行应用程序的DLL之一有一个可用的方法。他们掀起了一个VB脚本,调用它来生成文件,一切都恢复正常。

I don't know enough about Windows development to know what a .tlb is or why that worked but the moral of the story is if you have a 32bit web app that won't run on a 64bit (maybe any server?) Windows server because of error 429, take a good look at your .tlb file. Just don't ask me what you should be looking for.

我对Windows开发知之甚少,不知道.tlb是什么或者为什么有效,但故事的寓意是如果你有一个32位的网络应用程序不能运行在64位(可能是任何服务器?)Windows服务器因为错误429,请仔细查看.tlb文件。只是不要问我应该找什么。

1 个解决方案

#1


1  

Have you made sure that you have enabled IIS to run 32bit applications?

您确定已启用IIS以运行32位应用程序吗?

On you application pool, right-click and choose "Advanced Settings"

在您的应用程序池上,右键单击并选择“高级设置”

Then under General ensure "Enable 32-bit Applications is "True"

然后在常规下确保“启用32位应用程序是”真“

Typically this is set to "False" by default.

通常,默认设置为“False”。

This also worked for me http://support.microsoft.com/kb/177394

这也对我有用http://support.microsoft.com/kb/177394

IIS和64位Windows Server 2008中的错误429

#1


1  

Have you made sure that you have enabled IIS to run 32bit applications?

您确定已启用IIS以运行32位应用程序吗?

On you application pool, right-click and choose "Advanced Settings"

在您的应用程序池上,右键单击并选择“高级设置”

Then under General ensure "Enable 32-bit Applications is "True"

然后在常规下确保“启用32位应用程序是”真“

Typically this is set to "False" by default.

通常,默认设置为“False”。

This also worked for me http://support.microsoft.com/kb/177394

这也对我有用http://support.microsoft.com/kb/177394

IIS和64位Windows Server 2008中的错误429