在 64 位操作系统上的 32 位应用程序池中运行我的网站

问题描述:

这是我的设置:

开发:- Windows Server 2008 64 位- 视觉工作室 2008- 包含 3 个类库、1 个 Web 应用程序的解决方案

Dev: - Windows Server 2008 64-bit - Visual Studio 2008 - Solution with 3 class libraries, 1 web application

临时网络服务器:- Windows Server 2008 R2 64 位- 启用 32 位应用程序的 IIS7.5 集成应用程序池

Staging Web Server: - Windows Server 2008 R2 64-bit - IIS7.5 Integrated Application Pool with 32-bit Applications Enabled

在 Visual Studio 中,我已将所有 4 个项目设置为编译为任何 CPU",但是当我在具有 32 位应用程序池的 Web 服务器上运行此 Web 应用程序时,它超时并崩溃.当我以 64 位模式运行应用程序池时,它工作正常.生产网络服务器要求我在 64 位操作系统中运行 32 位应用程序池,这就是我在临时网络服务器上以这种方式配置的原因.

In Visual Studio I have set all 4 of my projects to compile to 'Any CPU' but when I run this web application on the web server with the 32-bit application pool it times out and crashes. When I run the application pool in 64-bit mode it works fine. The production web server requires me to run 32-bit application pool in 64-bit OS which is why I have this configured in this way on the staging web server.

(我考虑在 ServerFault 上发帖,但服务器部分似乎工作正常.我的代码似乎不想在 32 位应用程序池中运行,这就是我在这里发帖的原因.)

(I considered posting on ServerFault but the server part seems to be working fine. It is my code specifically that doesn't seem to want to run in 32-bit application pool which is why I am posting here.)

Faulting application name: w3wp.exe, version: 7.5.7600.16385, time stamp: 0x4a5bcd2b
Faulting module name: KERNELBASE.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdbdf
Exception code: 0xe053534f
Fault offset: 0x0000b727
Faulting process id: 0x%9
Faulting application start time: 0x%10
Faulting application path: %11
Faulting module path: %12
Report Id: %13

遗憾的是,我不认为这里有人可以解决这个问题.我使用的两个 DLL 来自下载的 ZIP 文件,当我转到这些文件的属性时,有一个框说它们已从 Internet 下载,我必须取消阻止"它们.似乎 64 位应用程序池不支持这一点,但是当我降到 32 位时它做到了.一旦我解除阻止"了 DLL,一切就开始正常工作了.

Sadly, I don't think there is any way someone here could have figured this out. Two DLLs I was using came from a downloaded ZIP file and when I went to the properties of those files there was a box that said they had been downloaded off the internet and I had to "unblock" them. Seems the 64-bit app pool did not honor this, but when I dropped to 32-bit it did. Once I "unblocked" the DLLs everything started working just fine.