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

时间:2011-05-24 17:39:43

标签: iis-7 permissions directory shared

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

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

应用程序无法修改和写入共享文件夹。我右键单击了我正在创建目录并写入的共享文件夹,然后单击“安全”选项卡。然后我点击了“编辑”。在对象下,我检查了“计算机”。然后在LOCATION下,我尝试了运行我的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

2 个答案:

答案 0 :(得分:7)

正如我在帖子上写的那样: GreKai.WordPress.com 您应该输入计算机名称而不是ApplicationPoolIdentity。这是你的问题。试试吧!它应该工作。

步骤如下:

转到共享文件夹 - &gt;右键单击 - &gt;属性 - &gt;安全性 - &gt;编辑 - &gt;添加(通常) - &gt;选择对象类型 - &gt;检查计算机 - &gt;现在输入您的应用程序所在的计算机名称,以及您发布应用程序的位置。

答案 1 :(得分:2)

为了解决这个问题,我们的服务器管理员在域控制器中创建了一个名为domainuser的域用户。然后,我进入IIS 7应用程序池高级设置,并将Identity从ApplicationPoolUser更改为“{domain name} \ domainuser”(在“自定义帐户”字段下)并输入帐户的密码。然后,我在{domain name} \ domainuser的共享文件夹上设置了写权限(在文件夹属性&gt; security下)。它运作得很好。