由一个AppPool创build的ASP.NET文件不能从另一个AppPool读取

我有两个ASP.NET应用程序,configuration为具有对共享NAS位置的读/写访问权限,并将它们用作简单的键值文件存储。

NAS位置通过使用NTFS目录路口在本地映射到每个应用程序,如下所示:

C:\inetpub\App1\Content\files C:\inetpub\App2\Content\files 

这背后的想法是有一个独立于底层存储解决scheme的应用程序相对path。

它工作得很好,直到我configuration每个应用程序使用专用AppPools。 现在,一个应用程序生成的文件不能被另一个读取。

在检查这两个应用程序生成的文件的安全属性后,我注意到来自任一应用程序的所有新生成的文件都显示以下exception:

  • IIS_IUSRS帐户被授予无权限的文件
  • 隐式IIS AppPool \ App#帐户被授予所有权限。

由于每个应用程序都在自己的IIS AppPool \ App#帐户下运行,因此可以有效地防止他们读取除自己生成的文件之外的任何文件。

创build文件的实际代码在两个应用程序中都是相同的,除了以下内容外,不会执行任何其他操作

  1. 在共享根目录下创build一个新的子目录并给它一个唯一的名字
  2. 使用所有默认参数,通过.NET的System.IO.FileStream对象在该子目录中创build一个文件。

令我感到困惑的是,IIS_IUSRS被包含在具有访问权限的帐户中,但是缺less所有的基本权限,即使父文件夹和根文件夹被configuration为包含对“此文件夹,子文件夹和文件”的读写权限。

我错过了什么,如何解决?

我已经设法解决问题,只需将已知IIS AppPool\App#帐户的权限添加到NAS所在的根目录即可。 这种方法的缺点是,将来任何额外的AppPool也必须手动处理。