昨天去帮客户配置网站,客户服务器是使用的windows 2003 64bit的系统,我把iis站点配置好后测试时发现程序一直提示运行超时,因为这个程序在32bit机器上运行没有问题,怀疑问题出在循环处,让程序在循环开始停住,测试可正常运行,输出记录状态rs.bof显示空白,怀疑jet引擎有问题,将程序的出错控制语句去掉后程序运行的错误描述是未找到提供程序,打开"数据源(ODBC)",转到“驱动程序”选项卡一看,发现没有JET引擎。于是从微软网站上下载了mdac2.7安装,安装后发现问题依旧!
从网上搜索发现是64位的iis无法兼容32的jet引擎,需要让iis以32为的方式运行,只要在命令行输入一下命令 cscript C:/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 之后IIS就会以32位方式来运行了。
运行命令后网站果然可以正常运行了
另外:网上还提到如果运行了asp.net模块当iis以32为方式运行时也必须加载32的asp.net扩展,否则iis无法正常运行,因为64位的IIS无法加载32位的ASP.Net模块,32位的IIS也无法加载64位的ASP.Net模块.
经常碰到32位的DLL什么的不能在64位Windows的IIS上调用,在网上找到这篇文章也许能够解决很多问题。总的思路就是先允许IIS支持32位程序,然后再用.Net Framework注册IIS。 Enable 32-bit Server Applications on 64-bit Machines ASP.NET applications that use TX Text Control .NET Server must be compiled for 32-bit platforms (see this article). IIS must be configured to execute these 32-bit applications. Generally, all applications will be executed in 64-bit mode. 1. Enable IIS's 32-bit support Open a command prompt and type in the following command: cscript %SYSTEMDRIVE%/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 This command enables the 32-bit mode in IIS. 2. Install the IIS 32-bit extensions Open a command prompt and type the following command: %SYSTEMROOT%/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -i This command installs the 32-bit web extensions for .NET Framework 2.0. 3. Activate .NET Framework 2.0 32-bit in IIS In the IIS-Manager, select the 'ASP.NET v2.0.50727 (32bit)' in the 'Web Service Extensions' panel and check 'allow' to activate it. 4. Restart the IIS by opening a command prompt: iisrestart