先说环境:
OS: windows 2008 r2 x64
IIS: 7.5
脚本: asp
DB:access
前言(原文链接 http://ddbiz.com/?p=101)
老系统(OS < windows 2008)上的网站有很多,php的都已经迁移到centos下去了;.net已经迁移到windows 2008 iis 7.5了,有用.net 2.x的,也有用.net 3.x,频繁更新的多数在.net 4.x;现在剩下些要命的 asp+access的更古老的站点。对于这些站,客户也只是偶尔用用,不能指望他们去升级代码。老环境将淘汰,asp+access迁移到新环境(iis 7.5)的工作也迫在眉睫。
测试
用一个客户的asp站点做了个迁移测试,先把遇到的问题列在下面:
从错误的代码上看,多数与数据的操作有关系,只是不同的操作,比如:增加、删除、修改,遇到错误返回了不同的错误信息,然后是文件目录的读写问题。 对于iis 7.5 +asp +access 在网上有很多方法,比如:
> 为 %WINDIR%\ServiceProfiles\NetworkService\AppData\Local\Temp增加 Authenticated Users 的读写权限
> 或者修改 %WINDIR%\System32\inetsrv\config\applicationHost.config 文件
不是说这些方法不好,而是很不好,毕竟不能为了一个或者几个用asp的站点,降低整个系统的安全性。因此我采用另外的方式,也能达到预期的效果。
设置方式
1. 站点的应用缓冲池设置(测试中我们命名其为 defaultasp )
ApplicationPoolIdentity 是iis7.5中的非常特色的功能,具体介绍不赘述,可参考MS的文档。应用缓冲池依然采用 applicationpoolidentity 的方式,启用32位应用程序模式,并不加载用户配置文件。
2. access 数据文件的访问控制
虽然我们仍然采用了应用虚拟账户(applicationpoolidentity)的方式,但是我们依然无法通过设置仅针对此站点的虚拟账户(如: iis apppool\defaultasp)的访问方式来设置安全级别。对于数据文件(access.mdb),只能为此文件的访问增加一个 Authenticated Users 用户组的修改/读取权限来达到读写数据的要求。
3. 用户上传文件的限制
用户上传文件所需要的目录权限,和2.中的mdb文件访问控制设置类似,但是只需要增加针对此站点的虚拟访问用户即可,增加 IIS APPPOOL\defaultasp 的修改、写入权限即可。(注:此用户是查询不到的,需要手工敲入)
4. 其他说明
iis 7.5默认是不安装在新系统上的。如果要在windows 2008 r2 上启用iis的话,需要新增角色。同样,asp也是不能默认安装在新增的角色中的,需要你手工钩选,此处不赘述,仅提醒之。
好了,至此这个asp+access的站点已经可以运行了