在工作中,我遇到了以下情况:我们有一个在 WIndows Server 2008 64 位机器上运行的 Web 应用程序。应用程序的 ApplicationPool 在 ApplicationPoolIdentity 下运行并配置为 .net 2 和 Classic 管道模式。
直到 XmlSerialization 需要创建使用 MEF 来创建已知类型集合的序列化程序程序集时,这都可以正常工作。
为了解决这个问题,我希望授予 ASP.Net 临时文件目录的 ApplicationPoolIdentity 权限就足够了,但是唉......
我所做的是从 cmd 提示符运行以下命令:
icacls "c:\windows\microsoft.net\framework64\v2.0.50727\Temporary ASP.NET Files" /grant "IIS AppPool\MyAppPool":(M)
显然这不起作用,否则您将不会阅读此内容:)
奇怪的是,每当我授予用户或更具体的授权用户组这些权限时,它都会起作用。奇怪的是(在我看来),在我开始授予访问权限之前,ApplicationPoolIdentity 已经是 IIS_IUSRS 的成员,它确实具有临时 asp 文件目录的修改权限。
现在我想知道为什么这种情况需要 Authenticated Users 组的修改权限。我认为这可能是因为 apppool 帐户缺少其他权限(谷歌搜索返回了一些结果,所以我尝试了这些),但是授予 Windows\Temp 目录和/或应用程序目录本身的 ApplicationPoolIdentity 修改权限并没有修复它.
现在我们有一个解决方法,但我讨厌我不知道这里到底发生了什么,所以我希望你们中的任何人都可以对此有所了解。
提前谢谢!