Я создаю каталоги и записываю файлы в общую папку в моем веб-приложении, размещенном на Windows Server 2008. Я запускаю пул приложений с идентификатором ApplicationPoolIdentity.
Чтобы дать вам представление о моих настройках ... Я установил разрешения для корневого каталога моего веб-приложения для двух разных пользователей: "IUSR" и "IIS APPPOOL \ MYPOOL". Я использую имя «MYPOOL» в качестве имени пула приложений, так что на него легко ссылаться.
Приложение не может изменять и записывать в общую папку. Я щелкнул правой кнопкой мыши общую папку, в которой я создаю каталоги и в которую я пишу, и нажал на вкладку «Безопасность». Затем я нажал «Редактировать». Под объектами я проверил «Компьютер». Затем в разделе LOCATION я попробовал компьютер / сервер, на котором запущено мое веб-приложение. Однако я не смог найти своего пользователя "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