我正在创建目录,并将文件写入我的 Web 应用程序中的共享文件夹,该应用程序托管在 Windows Server 2008 上。我正在运行具有 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
最佳答案
正如我在帖子中所写: GreKai.WordPress.com 您应该输入计算机名称而不是 ApplicationPoolIdentity。那是你的问题。试试吧!它应该可以工作。
步骤如下:
转到共享文件夹->右键单击->属性->安全性->编辑->添加(到目前为止)->选择对象类型->检查计算机->现在输入应用程序所在的计算机名称正在工作,您发布应用程序的地方。
关于iis-7 - ApplicationPoolIdentity 用户无法修改 Windows Server 2008 中共享文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114532/