代码之家  ›  专栏  ›  技术社区  ›  Jeremy H

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

  •  4
  • Jeremy H  · 技术社区  · 15 年前

    这是我的设置:

    黛芙: -Windows Server 2008 64位 -Visual Studio 2008 -3个类库、1个web应用程序的解决方案

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

    在visual studio中,我已将所有4个项目设置为编译为“任意cpu”,但当我在具有32位应用程序池的web服务器上运行此web应用程序时,它会超时并崩溃。当我以64位模式运行应用程序池时,它工作正常。生产Web服务器要求我在64位操作系统中运行32位应用程序池,这就是为什么我在登台Web服务器上这样配置的原因。

    (我考虑过在服务器上发布错误,但服务器部分似乎运行良好。我的代码似乎不想在32位应用程序池中运行,这就是我在这里发布的原因。)

    编辑:事件视图错误

    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
    
    8 回复  |  直到 13 年前
        1
  •  4
  •   Jeremy H    15 年前

    可悲的是,我不认为这里有人能搞清楚。我使用的两个dll来自一个下载的zip文件,当我转到这些文件的属性时,有一个框表示它们是从Internet上下载的,我必须“解锁”它们。似乎64位应用程序池并不支持这一点,但当我降到32位时,它却支持这一点。一旦我“解锁”了dll,一切都开始正常工作。

        2
  •  2
  •   Brian ONeil    15 年前

    我有一个类似的错误,我正在处理的应用程序…如果我将程序集构建为目标x86,那么它工作得很好。我只有在瞄准“任何CPU”时才有问题。

        3
  •  1
  •   zs2020    15 年前

    我想64位可以运行64位和32位代码,但32位只能运行32位代码。

    如果要在32位启用框上运行64位编译器编译的代码,则需要使用32位编译器编译代码。

        4
  •  1
  •   JoseG    15 年前

    对于每个项目,请尝试以下操作:

    1)在项目上单击鼠标右键,然后选择“属性”。

    2)选择左侧的“生成”选项卡

    3)选择x86作为平台目标

    4)重建

        5
  •  1
  •   David Mills    15 年前

    我认为该错误表示试图将64位dll加载到32位进程中。您的项目可能都设置为“任意CPU”(或x86),但我敢打赌您引用的是64位dll。您是否正在使用任何包含64位dll的第三方库?

    通过修改.csproj文件并使用一点msbuild脚本,可以根据当前计算机的环境动态交换32位/64位引用。如果你对如何做到这一点感兴趣,请告诉我,我会发表后续报道。

        6
  •  1
  •   Krisc    15 年前

    你的帖子有点混乱。

    有没有CPU-x64工作?

    有没有CPU-x64+32bitcompat不工作?

    如果是这样的话,听起来它们是正在使用的库之间的差异。也许运行时正在解释为x64,但正在提供x86库。很重要的一点是它们要匹配。

    您应该为x64和x86(或仅为x86)创建新配置,并根据需要部署它们。根据我的经验,使用“任何CPU”都会导致这条糟糕而丑陋的道路。

        7
  •  1
  •   Samuel    13 年前

    在我的例子中,问题是由客户端bin文件夹中第三方dll的错误版本引起的。

    我的电脑上安装了10.3和11.1版的红外线。我的项目有一个版本11.1的参考,但在我的客户机的bin文件夹中,只有Infragistics10.3存在。

    因为我的计算机上安装了这两个版本,所以在构建应用程序时没有任何错误。原因是,我可以确定哪里是好版本的红外线;在广电总局。但是对于没有安装Infragistics的客户,我收到的错误与本文中的问题相同。

        8
  •  0
  •   TamW    13 年前

    相同(通用)异常代码,但对我来说,如果我尝试使用域管理员用户帐户(到2K8R2上IIS 7上的32位.NET 2应用程序)进行身份验证,则会出现此问题。如果我创建了一个本地用户并将其添加到builtin\administrators组,然后使用该帐户登录,则应用程序运行良好。即使域管理员用户自动成为builtin\administrators的成员。希望这种思路,而不是依赖域管理帐户帮助别人。