如何强制IIS Express以32位模式运行?

66

我有一个经典的ASP应用程序,我正在尝试在64位Windows上的IIS Express下运行它。它使用Jet连接到Microsoft Access数据库,并且在64位下无法工作。

我为ASP应用程序创建了以下应用程序池,但它似乎忽略了enable32BitAppOnWin64属性,进程仍然是64位的。

<applicationPools>
    <add name="UnmanagedClassicAppPool32" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" enable32BitAppOnWin64="true" />
</applicationPools>

如何在IIS Express中使此应用程序池以32位进程运行?

5个回答

154

对于 Visual Studio 2013, Visual Studio 2015, Visual Studio 2017, Visual Studio 2019, Visual Studio 2022:

 Tools
  -> Options
   -> Projects and Solutions
    -> Web Projects
     -> Uncheck "Use the 64 bit version of IIS Express for web sites and projects"`

3
这些说明同样适用于 Visual Studio 2015! - Jim Buck
12
这个功能是全局适用的。有没有一种方式可以按项目进行设置? - arni
12
我遇到了相反的问题,这个选项没有被勾选,而我在尝试运行一个64位的项目。勾选它解决了问题。谢谢! - Andacious
2
Visual Studio 2017 的 True - Dimskiy
6
适用于VS2022。 - Noam
显示剩余3条评论

45

根据这篇文章,IIS Express 7.5只提供32位应用程序。但是,IIS Express 8.0提供了32位和64位版本的应用程序。32位版本位于c:\program files (x86)\IIS Express\iisexpress.exe,64位版本位于c:\program files\IIS Express\iisexpress.exe

IIS Express忽略enable32BitAppOnWin64属性。要运行32位应用程序池,必须执行32位版本的IIS Express。

您可以在任务管理器的“进程”选项卡中查看进程来确定正在运行的版本。64位版本将显示为iisexpress.exe,而32位版本将显示为iisexpress.exe *32


2
好的建议,昨天在升级后我们的构建服务器上尝试修复一个构建问题整整一天,结果发现IIS 7.5-8的更改是问题所在。 - jcvandan
1
使用以下命令,它使用联接来强制IISExpress使用32位版本:mklink /j "c:\program files\IIS Express\" "c:\program files (x86)\IIS Express\" - Banoona

10
在你的csproj项目的<PropertyGroup>标签下添加<Use64BitIISExpress>false</Use64BitIISExpress>
也可以通过UI访问,点击项目属性->Web选项卡->Bitness(更改为x64)。

2
在VS Studio的IIS Express属性窗口中,将第一个选项:“托管应用程序池”从“集成”更改为“经典”。

1

你确定吗?

它使用Jet连接到Microsoft Access数据库,不支持64位。

我之前也遇到同样的问题,并通过强制安装64位驱动程序最终解决了问题。最初失败是因为错误提示如果你已经安装了Office 2010 32位,则不能安装64位驱动程序。

但是...你可以使用“被动”开关强制安装Access数据库引擎(ACE)从这里的64位版本:

AccessDatabaseEngine_x64.exe /passive

然后我能够在当前的开发环境中运行我的旧代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接