IIS 7.5和ASP存在一个问题.我一直在研究却一无所获的网络.任何帮助都将不胜感激.
我的问题是:使用ASP.NET在IIS 7.5中,IIS和/或操作系统如何允许web应用程序在完全信任的情况下运行时写入C:\dump
这样的文件夹?为什么我不必显式地为应用程序池用户添加写访问权限(在本例中是ApplicationPoolIdentity
)?
我知道的是:
- 在IIS 7.5中,应用程序池的默认标识为
ApplicationPoolIdentity
. -
ApplicationPoolIdentity
表示名为"IIS APPPOOL\AppPoolName"的Windows用户帐户,该帐户是在创建应用程序池时创建的,其中AppPoolName是应用程序池的名称. - 默认情况下,"IIS APPPOOL\AppPoolName"用户是
IIS_IUSRS
组的成员. - 如果您在完全信任的情况下运行,您的web应用程序可以写入文件系统的许多区域(不包括
C:\Users
、C:\Windows
等文件夹).例如,您的应用程序将有权写入某些文件夹,如C:\dump
. - 默认情况下,
IIS_IUSRS
组不被授予对C:\dump
的读或写访问权限(至少不能访问通过Windows资源管理器中的"安全"选项卡可见的访问权限). - 如果拒绝对
IIS_IUSRS
的写入访问,则在try 写入文件夹时(如预期的那样)会出现SecurityException.
那么,考虑到所有这些因素,如何向"IIS APPPOOL\AppPoolName"用户授予写访问权限呢?w3wp.exe进程以该用户身份运行,那么是什么允许该用户写入它似乎没有显式访问权限的文件夹呢?
请注意,我理解这样做可能是为了方便,因为如果您在完全信任的情况下运行,那么授予用户对每个需要写入的文件夹的访问权限将是一件痛苦的事情.如果要限制此访问,可以始终在中等信任下运行应用程序.我感兴趣的是了解操作系统和/或IIS允许这些写入的方式,尽管似乎没有授予明确的文件系统访问权限.