这是我一直在研究并且无处可寻的IIS 7.5和ASP.NET问题。任何帮助将不胜感激。
我的问题是:在IIS 7.5中使用ASP.NET,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
,则尝试写入文件夹时(如预期的那样),您将收到SecurityException。
因此,考虑到所有这些因素,如何将写入访问权限授予“ IIS APPPOOL \ AppPoolName”用户?w3wp.exe进程以该用户身份运行,那么什么使该用户可以写入似乎没有明确访问权限的文件夹呢?
请注意,我知道这样做可能是为了方便起见,因为如果您在“完全信任”下运行,要授予用户对其需要写入的每个文件夹的访问权限将很痛苦。如果要限制此访问,则始终可以在“中等信任”下运行该应用程序。我有兴趣了解操作系统和/或IIS允许进行这些写入的方式,即使似乎没有明确的文件系统访问权限也是如此。