1. 让 IIS7 支持 ASP
Win2008 IIS7 默认不安装 ASP,如果需要 ASP 的支持,需要将这个角色服务选上。
2、相关设置
应用程序池-->DefaultAppPool-->高级设置-->启用 32 位应用程序,置为
True
上面的这一条设置由于没有操作,一直出现“500 内部服务器错误”,百度查找(“Windows Server 2008 R2 IIS7 asp网站 500 内部服务器错误 temp 设置权限”)原因,找资料,进行相关设置,一直没有找到相关的这个设置问题,浪费了很多时间,特别在此处注明。
如果只使用 ASP 功能,可将 2 项 ASP.NET 以及 Classic .NET AppPool
停止
网站-->编辑权限-->网站目录属性,安全-->添加 IUSR:修改、读取、写权限(仅读权限可能读不出 .mdb)
网站-->IIS-->ASP-->行为-->启用父路径,置为 True;并视需要修改“调试”里的参数
网站-->IIS-->默认文档-->添加网站首页文档,如 index.asp
以下的权限设置可以参考:
1、在服务器计算机管理中新建一网站用户用于对网站的匿名访问,比如用户名
为 vcoo
2、IIS7.5 中新建网站时物理路径下面有个【连接为...】,点开后设置为特定用户为之前新建的 vcoo
3、IIS7.5 中选择网站,在右边的功能视图中选择身份验证,编辑【匿名身份验证】为新建的 vcoo
4、在磁盘网站目录中添加 vcoo 用户的读取和修改权限
5、值的注意的是硬盘网页目录权限要设置网页 web 目录上级目录的权限(暂时不知为何)
6、可笑的是从网上搜索到的答案是给网页目录添加 Everyone 用户的完全控制权,找黑呢!可笑!
以下是 IIS7.5 的权限介绍:
工作进程(Worker Process)
Worker Process是 IIS 应用程序的宿主, 在任务管理器中可以看到每一个Worker Process就是一个 w3wp.exe.
工作进程标识(Worker Process Identity - WPI) :
Worker Process 运行时的身份:
* 在 IIS6, Windows 2008 IIS7 下, 默认关联权限是 NetworkService.
* 在 Windows 2008 R2 IIS7.5 下,默认是关联权限是Application Pool Identity.
Application Pool Identity:这里并没有提供一个直接的手段来设置 Worker Process 在什么身份标识下运行, 而是通过 Application Pool 的身份标识设定来实现的.
应用程序池(Application Pool)
Application Pool 包含至少一个或多个 Worker Process(Web Garden 模
式). 在运行时会将 Application Pool 的身份注入到 Worker Process
中, 就会以ApplicationPool的身份运行. 可以认为Application Pool与其
包含的 Worker Process 的运行身份是一致的.
应用程序池标识(Application Pool Identity)
是 Application Pool 运行时的身份:
* 在 IIS6, Windows 2008 IIS7 下, 默认关联权限是 NetworkService.
* 在 Windows 2008 SP2 IIS7 下, 运行身份设置时除了
LocalService,NetworkService, LocalSystem 外增加了
Application Pool Identity 一个选项, 而这个则是一个可以设置权限的虚拟标识.
* 在 Windows 2008 R2 IIS7.5 下, 默认是关联权限是 Application Pool Identity.
虚拟帐户 Application Pool Identity
只是一个统称, 并不存在实际的这个命名。他依赖你的 Application Pool 的名称,例如我的 Application Pool 名字叫做: SimonwAppPool, 那么这个虚拟标识的全名是: IIS AppPool\SimonwAppPool 运行在此 Application Pool 下的 Worker Process 从任务管理器中可以看到 w3wp.exe 是在 SimonwAppPool 这个用户下运行的。可以在文件系统中对这个帐户分配权限.这么做的好处是能够将能够将权限分离开来做粒度更细的配置,不像是 NetworkService 有很多应用基于此,设置一个权限影响一大片。
不过有时候通过 UI 找不到这个对象大约是个 Bug, 通过命令行 icacls 处理即可.
用户组与用户
在 IIS7 下需要注意 2 个特殊的用户和用户组, 在 IIS6 中有着类似的对应关系
IIS6:IIS_WPG - IIS7:IIS_IUSRS
IIS6:IUSR_MachineName - IIS7:IUSR
最大的改变就是他们都成为了系统内置帐户(built-in account)有着统一的SID,这样的好处在于做不同机器/系统间的拷贝时可以连带权限一同拷贝过去了, 在以往因为 SID 不同换了机器权限是无法有效拷贝的只能挨个手动设置, 现在方便多了.
默认他会拥有适当的权限来运行 Worker Process. 所有的 WPI 下的运行帐户
均被隐式的自动加入到这个组中, 以获得最小的运行权限. 例如当你将
SimonwAppPool 这个 Application Pool 的运行身份设置为
Application Pool Identity, 那么 IISAppPool\SimonwAppPool 这个用户会被自动加入到 IIS_IUSRS 组中拥有他的全部权限. 因此对此组权限赋值需很小心很容易不知不觉中影响一大片.
IUSR 默认匿名帐户
特别需要注意的别看他是一个匿名帐户并且没有密码, 但他属于 authenticatedusers ,而 authenticated users 属于 Users 组, 因此 IUSR 默认具备了 Users 组的权限.
以下为网上找到的其它设置,试过,发现在 2008 IIS7.5 中,不设也可以:默认装完 IIS7 之后,如果使用 ASP 程序时,提示数据库连接失败,可能是因为 MS Jet 引擎改变了临时目录的位置,但是又没有对临时的存取权限所致:
给 C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp 目录添加 Authenticated Users 用户,并赋全部权限。其中 AppData 目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。
也有贴子提到给 C:\Windows\Temp 文件夹,添加用户 Authenticated Users ,并赋全部权限。
链接方式:
ServerPath=Server.MapPath("/xxx.mdb")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ServerPa
th
Set schooldb=Server.CreateObject("Adodb.Connection")
schooldb.Open connstr