2011-05-24 109 views
3

我创建目录和文件写入到正在Windows Server 2008上托管的我正在运行的应用程序池的身份我的web应用程序中的共享文件夹ApplicationPoolIdentity。ApplicationPoolIdentity用户不能修改共享文件夹中的文件在Windows Server 2008

为了让你对我的设置有所了解。我已经将权限设置为我的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 

回答

7

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

的步骤是:

转到共享文件夹 - >右键 - >属性 - >安全 - >编辑 - >添加(到目前为止像往常一样) - >选择对象类型 - >检查计算机上 - >现在输入您的应用程序在哪里发布应用程序的计算机名称。

+0

你可以继续,并详细介绍你的答案,而不是引用链接的步骤?如果你这样做,我会改变你的答案。我的回答很好,但你的看起来是微软设计它的方式。 – MacGyver 2012-03-03 07:02:50

1

为了解决这一个,我们的服务器管理员创建名为domainuser域控制器的域用户。然后我去到IIS 7应用程序池的高级设置,并从ApplicationPoolUser改变身份为“{域名} \ domainuser”(自定义帐户字段下),并进入该帐户的密码。然后,我为{域名} \ domainuser的该共享文件夹设置了写权限(在文件夹属性>安全下)。它效果很好。

+2

你的回答的缺点是,你不使用ApplicationPoolIdentity用户,你必须输入密码。 – 2012-07-02 03:48:02

+0

这不是针对所述问题的解决方法,更多的是解决原始问题的解决方法。 – Rocklan 2012-07-13 03:55:12

+0

事实上,使用可锁定,专用于一个狭窄的目的服务帐户是更安全的选择,因为它减少了攻击面。使用machineaccount $进行访问意味着网络服务帐户下运行的任何进程(如该服务器上的其他网站)也将获得该网络资源的权限。但是,密码管理可能是缺点。 – 2014-03-20 22:43:29