Reputation: 18980
I am creating directories, and writing files to a shared folder within my web application that is being hosted on Windows Server 2008. I am running the application pool with an identity of ApplicationPoolIdentity.
To give you an idea of my setup so far.. I've set permissions to the root of my web application root directory to two different users: "IUSR" and "IIS APPPOOL\MYPOOL". I'm using the name "MYPOOL" as the name of my application pool, so it's easy to reference.
The application is unable to modify and write to a shared folder. I right clicked the shared folder that I'm creating directories in and writing to, and clicked on the "Security" tab. Then I clicked "Edit". Under objects, I checked "Computer". Then under LOCATION, I've tried the machine/server running my web application. I wasn't able to find my "MYPOOL" user however under the users. I tried to follow this link, but it wasn't very complete. I don't know which user to use. I continue to get a System.IO exception because it doesn't have permissions. Once I know which user to use, I will have to give "Modify" permissions to the "ExportPath" directory.
For a quick test, I made a dummy page called FilePermissionsTest.aspx, and put some code to write a file to create a directory and write a file in my Page_Load event of the code behind. But I haven't gotten far enough to test it.
...
<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
Upvotes: 3
Views: 12092
Reputation: 3140
as I've written at my post : GreKai.WordPress.com You should have entered the computer name and not the ApplicationPoolIdentity. That was your problem.Try it out ! It should work.
The steps are :
Go to the Shared Folder –> right click –> properties -> security –>edit –> add (so far as usual ) -> choose object types –> check on computers –> now enter the computer name where your application is working from , where you published your application.
Upvotes: 7
Reputation: 18980
To solve this one, our server administrator created a domain user in the domain controller called domainuser. Then I went into the IIS 7 application pool advanced settings, and changed the Identity from ApplicationPoolUser to "{domain name}\domainuser" (under the Custom Account field) and entered the password for the account. Then I set write permissions (under the folder properties > security) on that shared folder for {domain name}\domainuser. It worked great.
Upvotes: 2