我正在创建目录,并将文件写入我在Windows Server 2008上托管的Web应用程序中的共享文件夹。我正在运行具有ApplicationPoolIdentity标识的应用程序池。
为了让您了解我到目前为止的设置..我已将我的Web应用程序根目录的根目录权限设置为两个不同的用户:“IUSR”和“IIS APPPOOL \ MYPOOL”。我使用名称“MYPOOL”作为我的应用程序池的名称,因此很容易引用。
应用程序无法修改和写入共享文件夹。我右键单击了我正在创建目录并写入的共享文件夹,然后单击“安全”选项卡。然后我点击了“编辑”。在对象下,我检查了“计算机”。然后在LOCATION下,我尝试了运行我的Web应用程序的机器/服务器。我无法在用户下找到我的“MYPOOL”用户。我试着按照这个链接,但它不是很完整。我不知道使用哪个用户。我继续获得System.IO异常,因为它没有权限。一旦我知道要使用哪个用户,我就必须向“ExportPath”目录授予“修改”权限。
为了进行快速测试,我创建了一个名为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
答案 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下)。它运作得很好。