IIS6+64位系统 VS 32位APP 在64位机器上运行32位版本的ASP.NET 2.0.****
来源:互联网 发布:基于yii2的cms 编辑:程序博客网 时间:2024/04/30 00:46
上64位的系统现在是越来越多了,特别是在服务器上,64位系统的优势不言而喻。但由于历史的原因,很多时候我们的网络APP中都保留有32位的模块,这样的程序如果要在IIS7上运行,很简单,创建一个单独的支持32位模式的应用池就可以了。但要在64位的IIS6上运行的时候,情况就要复杂些,本文将对此做一些介绍。
就32位支持来说,IIS6与IIS7最大的不同是,在IIS6中,整个站点(Site)只能运行在一种模式下:要么32位,要么64位,这句话是什么意思呢?在C:/Windows/Microsoft.NET下我们可以看到两个目录Framework和Framework64,往里走的话,会发现二者的目录结构几乎完全一样(唯一的区别是1.0.3075只存在于Framework,因为这个版本的.net只支持32位模式),顾名思义,前者支持32位模式,后者支持64位模式,一个站点在一个时间点只能载入其中一套程序,也就是说你必需在二者之间做出选择。这个选择会影响到这个站点下所有的APP,所以,在操作之前,务必三思而后行!一个纯64位程序在32位模式下肯定会损失性能的。
然后,在IIS管理器中,右键点击Default Web Site,点击“属性”,打开“Home Directory"页,点击”Configuration",这里我们可以看到后缀的映射表,注意看一下Executable Path一栏就会发现,其中有不少都指向了C:/Window/Microsoft.NET/下的其中一个路径,如果是Framework,说明当前站点运行在32位模式下,否则,就运行在64位模式下。
不用说,如果站点运行在64位模式下,而我们又打开了一个包含了32位程序的APP,肯定会出问题
下面一个例子:在64位机器上运行32位版本的ASP.NET 2.0.****
C:/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
C:/Windows/Microsoft.NET/Framework64/v2.0.40607/aspnet_regiis.exe -ua
iis重启命令 iisreset
C:/Windows/Microsoft.NET/Framework64/v2.0.40607/aspnet_regiis.exe -i -enable
C:/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
C:/Windows/Microsoft.NET/Framework/v2.0.40607/aspnet_regiis.exe -i -enable
iis重启命令 iisreset
命令看上去很吓人(-u是要卸载ASP.NET),不过不用担心,后面-i就是安装了,而且安装程序会自动地在IIS中将ASP.NET用到的后缀名映射到C:/Window/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll。它怎么知道该用64位还是32位呢?呵呵,注意上面我们使用的是32位的aspnet_regiis,自然就是链到32位的dll了。
上面这两步的顺序不能颠倒,否则就会出现一些奇怪的错误。比如在我试的过程中,有一段时间整个站点都Service Unavailable了(HTTP 503),原因是我先在64位下用64位的aspnet_regiis.exe把IIS和64位的.NET关联上,然后才用adsutil.vbs把模式改回32位(stupid),结果系统在32位模式下发现载入的DLL全是64位的,就报503错了,这时候如果查看一下事件管理器(在“我的电脑”上点击右键,点击“管理”),就会发现W3SVC-WP报了很多错,错误信息里可以看到SAPI Filter 'C:/WINDOWS/Microsoft.NET/Framework64/v2.0.50727/aspnet_filter.dll' could not be loaded due to a configuration problem. 之类的。如果使用了MVC框架,那么下面还有一步就是去手动注册mvc后缀,这一步本身没什么可说的,只要映射到32位的aspnet_isapi就可以了。
说到底,兄弟们,还是升级到IIS7吧,一个版本之差,真的比iis6要强多了
- IIS6+64位系统 VS 32位APP 在64位机器上运行32位版本的ASP.NET 2.0.****
- 在64位windows server 2003的IIS6上运行32位的.NET程序
- 64位win2003 IIS6运行32位的.NET程序
- 在 64 位版本的 Windows 上,如何在 32 位版本的 ASP.NET 1.1 和 64 位版本的 ASP.NET 2.0 之间切换
- 在64位版本的Windows上,如何在32位版本的ASP.NET 1.1 和64位版本的ASP.NET 2.0之间切换
- [转]在 64 位版本的 Windows 上,如何在 32 位版本的 ASP.NET 1.1 和 64 位版本的 ASP.NET 2.0 之间切换 ...
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- 在64位的windows server 2003运行IIS6运行32位的.NET程序 .
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- 在64位的windows server 2003运行IIS6运行32位的.NET程序(转)
- 设置在64位机器上的IIS(IIS6/IIS7)兼容32位程序(64位ODBC和32位ODBC的问题同样适用)
- 使IIS6运行在64位系统上
- 32位系统上开发的Access为数据库的程序在64位机器上运行出错的解决办法
- 重新认识串口,使用交叉还是直连串口线 (转)
- v$dba_blockers
- 项目管理课程体系——世纪德本PMCD品牌课程
- subversion配置
- up()&down()
- IIS6+64位系统 VS 32位APP 在64位机器上运行32位版本的ASP.NET 2.0.****
- 如何在ASP.NET 2.0 中的Master Page具体页面中 使用CSS?
- final关键字
- 对Domino附件上传下载功能 和 Servlet功能整合结果报告
- 犹豫
- 图书大战
- 十三、监听器
- C++智能指针
- 10个的有关编程的至理名言