2013-04-25 94 views
41

我有一个经典的ASP应用程序,我试图在64位Windows上的IIS Express下运行。它使用Jet连接到Microsoft Access数据库,并且不能在64位下工作。如何强制IIS Express以32位模式运行?

我为ASP应用程序创建了以下应用程序池,但似乎忽略了enable32BitAppOnWin64属性,并且该过程仍为64位。

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

如何在IIS Express中将此应用程序池作为32位进程运行?

回答

39

根据this,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位运行,您必须执行IIS Express的32位版本。

您可以通过检查“进程”选项卡上的进程来确定在“任务管理器”中运行的是哪个版本。 64位版本将显示为iisexpress.exe,32位版本将显示为iisexpress.exe *32

+1

很好的建议,昨天升级一整天后,试图修复构建服务器上的内部版本,并且IIS 7.5-8的更改成为问题。 – jcvandan 2013-05-21 08:44:05

+0

使用以下命令,该命令使用结来强制IISExpress使用32位版本: mklink/j“c:\ program files \ IIS Express \”“c:\ program files(x86)\ IIS Express \“' – user1328350 2014-11-18 17:29:23

0

你确定吗?

它使用Jet连接到Microsoft Access数据库,并且不会在64位下工作。

我有同样的问题,并最终通过强制安装64位驱动程序解决它。最初由于出现错误而失败,如果您安装了Office 2010 32位,则无法安装64位驱动程序。

但是......你可以强制Access数据库引擎的64位版本(ACE)from here安装带有“被动”开关:

AccessDatabaseEngine_x64.exe /passive 

然后,我能够运行我的遗留代码与我目前的开发环境。

1

在VS工作室的IIS表达属性窗口,更改第一个选项: '托管应用程序池' 从 '综合' 到 '经典'

77

对于Visual Studio 2013 的Visual Studio 2015年 的Visual Studio 2017年:

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

谢谢尼尔!我有我的默认运行64位由于某种原因,这让我很想知道为什么它使用GAC_64库,即使目标平台设置为x86。 – InitialV 2015-06-05 04:44:20

+2

这些方向也适用于Visual Studio 2015! – JimmyBoh 2015-10-08 15:18:04

+5

这适用于全球。有没有办法做到这一点每个项目? – arni 2016-08-10 08:30:54

相关问题