Temporary Asp.Net文件的ApplicationPoolIdentity权限

Ant*_*ton 0 asp.net iis iis-7.5

在工作中我遇到了以下情况:我们有一个在WIndows Server 2008 64位机器上运行的Web应用程序.应用程序的ApplicationPool在ApplicationPoolIdentity下运行,并配置为.net 2和Classic管道模式.

在XmlSerialization需要创建使用MEF创建知识类型集合的Serializer程序集时,这种方法很有效.

为了解决这个问题,我希望将ApplicationPoolIdentity权限授予ASP.Net Temporary Files目录就足够了,但是...

我所做的是从cmd提示符运行以下命令:

icacls "c:\windows\microsoft.net\framework64\v2.0.50727\Temporary ASP.NET Files" /grant "IIS AppPool\MyAppPool":(M)
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,否则你不会读这个:)

奇怪的是,每当我授予用户或甚至更具体,Authenticated Users Group这些权限时,它都有效.同样奇怪(在我看来)是在我开始授予访问权限之前,ApplicationPoolIdentity已经是IIS_IUSRS的成员,它具有临时asp文件目录的修改权限.

现在我想知道为什么这种情况需要Authenticated Users组的修改权限.我认为可能是因为apppool帐户缺少额外的权限(谷歌搜索返回了一些结果,所以我尝试了这些),但是授予对Windows\Temp目录和/或应用程序目录本身的ApplicationPoolIdentity修改权限并没有修复它.

现在我们有一个解决方法,但我讨厌我不知道这里到底发生了什么,所以我希望你们中的任何人能够对此有所了解.

Thanx提前!

Car*_*res 5

如果应用程序池作为AppPool Identity运行,那么事情应该是开箱即用的,因为工作进程将注入IIS_IUSRS SID,它将具有正确的写入权限.

我的猜测是,应用程序必须使用Windows身份验证,并且在ASP.NET中启用模拟,以便代码可能作为发出请求的特定用户运行,而不是必须运行进程标识.

我猜对应用程序正在运行Windows身份验证吗?并在asp.net中启用了模拟?

  • 即使您是Administrators组的成员,由于网络令牌过滤,您可能无法使用管理员权限运行.我会专门为您的帐户尝试ACL,然后再试一次(不是管理员或所有人),看看是否有效.最后,我会使用ProcMon来查看它是否能够识别正在执行访问的用户身份http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx (2认同)