为什么我仍然无法获得IIS ApplicationPoolIdentity来将文件写入文件夹?

时间:2018-12-05 09:07:46

标签: asp.net file-io iis-7.5 ntfs applicationpoolidentity

我的ASP-Webpages应用程序需要将自行生成的文件写入其根目录下的本地文件夹中。在我的开发环境中,一切都像魅力一样运行,甚至到任何其他给定的网络位置。 问题是我无法让生产环境做到这一点。仅在任何地方都不会创建文件。丢失权限等也不会引发任何异常。Nada。

我相信我已经阅读并尝试了过去7年中任何人在Internet上撰写的所有内容,并且我觉得自己在追逐自己的想法以寻求解决此问题的动力。真的那么难吗? 冒着被标记为重复的风险,除了在这里发布我的问题,我别无选择。

基本上,这就是我目前所拥有的:

生产应用程序在Windows Server 2008 R2(IIS版本7.5)上运行。它具有专用的应用程序池,其标识设置为ApplicationPoolIdentity(.NET Framework v4 /集成管道)。 Application Basic Settings

已验证IIS_IUSRS的AppPool成员身份。 Verified Group Membership

用户身份验证设置为Windows身份验证。 User Authentication

是否应将匿名身份验证设置为“已启用”以使用ApplicationPoolIdentity?我尝试将其设置为打开,但它与Windows身份验证冲突,后者是我们应用程序的重要组成部分,无法关闭。 如果是这样,那怎么办?

已向应用程序池和IIS_IUSRS授予了对该文件夹的读取和写入权限。 我尝试设置“完全控制”,但这也无济于事。 Folder Security Settings

这是(向下分解的)代码,用于将文件写入所需的位置: Stripped-down Code

我尝试过的其他(愚蠢的)事情是:

  • 在我的代码中使用绝对和相对路径方向。
  • 启用匿名身份验证,导致与必要的Windows身份验证发生冲突。
  • 将应用程序池ProcessModel身份设置为网络服务。
  • 回收应用程序池。
  • 为应用程序池加载用户配置文件“打开”。
  • 为用户将IE增强安全性配置设置为“关闭”。
  • 重新启动服务器计算机。
  • 使用不同的浏览器。
  • 授予“所有人”完整文件夹权限,只是尝试使用效果,什么都没有。
  • 通过IIS配置编辑器将AuthenticatedUserOverride设置为UseWorkerProcessUser。这导致我的应用程序不再识别Current.User.Identity.Name,因此它阻止了进一步的站点访问。

我需要保持Windows身份验证,还能够让应用程序匿名将文件写入给定位置。

有人可以向我暗示正确的方向还是告诉我我忽略了什么?

谢谢!

0 个答案:

没有答案