IIS 应用程序池身份没有对“Temporary ASP.NET Files”文件夹的写入权限

51
我正尝试从名为“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”创建的用户设置权限,对吗?
目前我看到的解决方案只是建议将用户设置为“Network Service”,但这似乎会破坏引入'ApplicationPoolIdentity' 的网站隔离性。

我遇到了完全相同的问题。你能找到解决方法吗? - Mehdi Maujood
不幸的是,我没有找到任何解决此问题的方法。我开始认为实际上没有解决方案。但我很难相信微软会在考虑.NET应用程序的影响之前添加“ApplicationPoolIdentity”功能。 - karmasponge
我应该添加一个明确的答案,告诉人们不要在.NET应用程序中使用'ApplicationPoolIdentity'吗? - karmasponge
你的直觉是正确的。根据以下链接(http://www.iis.net/learn/manage/configuring-security/application-pool-identities),不推荐使用Network Service,因为以Network Service身份运行的服务可能会干扰其他以相同身份运行的服务。 - Tony L.
11个回答

0
这发生在我的一个网站上,我的网络主机的技术支持团队通过在我的web.config文件的编译节点上使用tempDirectory属性来更改ASP.NET的TEMP目录来解决了这个问题。
<system.web>
  <compilation debug="true" targetFramework="4.6.1" tempDirectory="c:\temp" />
  ...
</system.web>

请注意:目录必须对服务帐户可访问,因此设置权限可能是解决方案的一部分,但没有其他答案提到这个文档不完整的tempDirectory web.config属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接