ApplicationPoolIdentity 用户无法修改 Windows Server 2008 中共享文件夹中的文件

ApplicationPoolIdentity 用户无法修改 Windows Server 2008 中共享文件夹中的文件

我正在创建目录并将文件写入托管在 Windows Server 2008 上的 Web 应用程序中的共享文件夹。我正在运行标识为 ApplicationPoolIdentity 的应用程序池。

为了让您了解我目前的设置……我已将 Web 应用程序根目录的根权限设置为两个不同的用户:“IUSR”和“IIS APPPOOL\MYPOOL”。我使用名称“MYPOOL”作为我的应用程序池的名称,因此很容易引用。

应用程序无法修改和写入共享文件夹。我右键单击了正在创建目录并写入的共享文件夹,然后单击“安全”选项卡。然后单击“编辑”。在对象下,我选中了“计算机”。然后在位置下,我尝试了运行我的 Web 应用程序的机器/服务器。但是,我无法在用户下找到我的“MYPOOL”用户。我尝试点击此链接,但不是很完整。我不知道该使用哪个用户。我继续收到 System.IO 异常,因为它没有权限。一旦我知道要使用哪个用户,我将必须授予“ExportPath”目录“修改”权限。

这对我不起作用: http://grekai.wordpress.com/2011/05/23/permissions-for-shared-folder-for-iis-7-application-pool-identity-across-domain/

为了进行快速测试,我创建了一个名为 FilePermissionsTest.aspx 的虚拟页面,并在后台代码的 Page_Load 事件中放入了一些代码来写入文件以创建目录并写入文件。但我还没有进行足够的测试,因为它不会写入文件。

...

<div>
Check to see if the file "_File_Permissions_Test.txt" was written to <% Response.Write(Data.ConfigurationHelper.ValueFromConfiguration("ExportPath", Nothing))%> 
</div>

...

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim exportPath As String = Data.ConfigurationHelper.ValueFromConfiguration("ExportPath", Nothing)
    If exportPath = String.Empty Then Return
    Dim exportDirectory As DirectoryInfo = Directory.CreateDirectory(exportPath)

    Dim writer As StreamWriter = File.CreateText(Path.Combine(exportDirectory.FullName, "_File_Permissions_Test.txt"))
    writer.WriteLine("TESTING... " + DateTime.Now().ToString)
    writer.Flush()
    writer.Close()

End Sub

答案1

如果您使用指定身份运行应用程序池,则向计算机帐户授予权限将不起作用。您应该使用域帐户运行 AppPool,并向该帐户授予对共享文件夹的适当权限。如果共享文件夹位于远程计算机上,则使用本地帐户也将不起作用。

如果您没有域,您可以使用 LocalSystem 运行 AppPool,这应该可以授予机器帐户对共享文件夹的权限。但从安全角度来看,这可能不是最理想的。

答案2

您应该输入计算机名称而不是 ApplicationPoolIdentity。那是您的问题。试试吧!它应该有效。

相关内容