IIS ApplicationPoolIdentity没有“临时ASP.NET文件”的写权限

时间:2014-03-31 07:42:29

标签: asp.net iis windows-8

我试图从名为'SomeAppPool'的'AppPool'启动一个使用'ApplicationPoolIdentity'的网站,当我启动网站时,我收到以下错误:

当前标识(IIS_APPPOOL \ SomeAppPool)没有对“c:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files”

的写入权限

我正在Windows 8下启动Visual Studio 2012中的“使用本地IIS Web服务器”(没有附带调试器)。

我注意到的第一件事是“Temporary ASP.NET Files”文件夹甚至没有 存在,所以没有任何东西可以设置安全权限。

第二个问题是,即使有文件夹,我会设置哪些权限?我假设我不应该为通过'ApplicationPoolIdentity'创建的每个用户设置权限。正确?

我见过的当前解决方案只是建议将用户设置为“网络服务” 但这似乎打破了'ApplicationPoolIdentity'网站的孤立 介绍了。

10 个答案:

答案 0 :(得分:72)

This ASP.NET forum answer,在其线程中未被承认,是我的解决方案。它的影响也很小:它不会尝试重新注册IIS或为用户提供危险的权限。总结答案:

  1. 以管理员身份打开命令窗口(开始/程序/附件,然后右键单击命令提示符,然后选择“以管理员身份运行”)。
  2. 输入以下命令:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Aspnet_regiis.exe -ga domain\user
    
  3. 在上面的示例中,将您的域和用户替换为domain\user。这就是全部。

    Aspnet_regiis.exe的Microsoft文档是here。请注意,-ga开关的文档是指版本3.5及更早版本中的错误,它不适用于本地帐户。如果我正确读取它,则所有版本都支持域帐户,并且从Framework 4.0开始支持本地帐户。


    2017年6月6日更新:对于Windows 8及更高版本,请考虑使用dism命令。它包含在this SO answer中。感谢@codebrain建议。


    2015年7月7日更新:@Vertigo好评如此,这个答案也适用于2008 R2 / 2012下的.NET 2.0中的NETWORK SERVICE帐户,所以我上面关于本地帐户的免责声明4.0可能是错的。

    如果其他人发现这适用于.NET 3.5或更早版本的本地帐户,请随时编辑我的答案或在评论中注明;对于可能遇到同样问题的其他人来说,这将是一个很大的帮助。

答案 1 :(得分:6)

除了投票解决方案外,请检查您的磁盘空间并确保有足够的可用磁盘空间。

我刚刚在我们的一个生产服务器上遇到了这个问题,它与低磁盘空间有关。

答案 2 :(得分:6)

我遇到了同样的问题。我检查了路径c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\寻找Temporary ASP.NET Files,但是没有任何此名称的文件夹。所以我手动创建了一个新文件夹,并将其命名为Temporary ASP.NET Files并修复了问题。

因此请确保提到的路径存在。

答案 3 :(得分:5)

我通过将应用程序池使用的用户添加到IIS_IUSRS组来解决错误。

答案 4 :(得分:1)

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319尝试运行aspnet_regiis.exe命令。

通常应设置权限。如果发生Windows添加/删除程序,或者安装了新的.NET版本,这些东西会重置一些。运行aspnet_regiis.exe应该有帮助。

另外,请确保您以管理员身份运行Visual Studio。

答案 5 :(得分:1)

我们现在是 2021 年,但在 Windows Server 2019 上也遇到了这个问题。

错误 CS0016 在我的案例中具有误导性:在 Temporary ASP.NET Files 上授予 ApplicationPool-Identities 或类似用户的权限不起作用,也不是实际问题。

安装新服务器后,Users 无权修改 C:\Windows directory 中的临时文件夹。 .NET需要向temp文件夹写入临时文件时,出现无写入权限异常。

modifyUsers 权限分配给 C:\Windows 目录下的临时文件夹对我有用。

答案 6 :(得分:0)

我刚刚遇到这个问题,我所做的就是创建一个新帐户,让我们说#34; Webby"。

在国际空间站中,进入页面的高级设置并更改"物理路径凭证"到Webby帐户。上面的Path字段有网页目录;在资源管理器中打开此文件夹并添加具有修改权限的Webby。在"失败的请求跟踪"这是一个日志目录;同时添加修改并设置"已启用"为true(你可以稍后关闭它,但要确保它能正常工作)。 此时,您可以尝试使用您的网站,因为您正在使用的用户,您肯定会收到错误消息。

当前标识(YOUR \ Webby)没有对“C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files'”的写入权限。

现在,要解决您的问题,您需要转到C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files'目录并添加Webby,再次修改工作。

仅为网站使用特殊帐户的解决方案是一个好主意。这是一个真实的帐户(不像ApplicationPool那样虚拟),Windows也不会混淆(......很容易)。

希望这有帮助。

答案 7 :(得分:0)

在IIS7中,我右键单击虚拟目录,删除了该应用程序,然后再次添加了它。这为我解决了。

答案 8 :(得分:0)

我解决了 通过释放磁盘空间

答案 9 :(得分:0)

我遇到了这个问题,可以解决。您只需要为当前用户授予文件夹权限:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files。很容易。

祝你好运!