我如何强制IIS Express以32位模式运行?
我有一个经典的ASP应用程序,我试图在64位Windows上运行IIS Express。 它使用Jet连接到Microsoft Access数据库,并不会在64位下工作。
我为ASP应用程序创build了以下应用程序池,但似乎忽略了enable32BitAppOnWin64
属性,并且该过程仍然是64位。
<applicationPools> <add name="UnmanagedClassicAppPool32" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" enable32BitAppOnWin64="true" /> </applicationPools>
我怎样才能得到这个应用程序池在IIS Express作为一个32位进程运行?
对于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"`
据此,IIS Express 7.5仅作为32位应用程序。 但是,IIS Express 8.0同时提供了32位和64位版本的应用程序。 32位版本可以在c:\program files (x86)\IIS Express\iisexpress.exe
中find,64位版本可以在c:\program files\IIS Express\iisexpress.exe
。
IIS Express忽略enable32BitAppOnWin64
属性。 要以32位运行应用程序池,您必须执行IIS Express的32位版本。
您可以通过检查“进程”选项卡上的进程来确定在“任务pipe理器”中运行的是哪个版本。 64位版本将显示为iisexpress.exe
,32位版本将显示为iisexpress.exe *32
。
在VS工作室的IIS Express属性窗口中,将第一个选项“Managed Application Pool”从“Integrated”更改为“Classic”
你确定?
它使用Jet连接到Microsoft Access数据库,并不会在64位下工作。
我有同样的问题,并最终通过强制安装64位驱动程序来解决它。 最初由于出现错误而失败,如果安装了Office 2010 32位,则无法安装64位驱动程序。
但是,您可以从这里强制使用64位版本的Access数据库引擎(ACE)来安装“被动”开关:
AccessDatabaseEngine_x64.exe /passive
然后,我就可以使用当前的开发环境运行我的遗留代码。