Пользователь ApplicationPoolIdentity не может изменять файлы в общей папке в Windows Server 2008 - PullRequest
3 голосов
/ 24 мая 2011

Я создаю каталоги и записываю файлы в общую папку в моем веб-приложении, размещенном на 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

Ответы [ 2 ]

7 голосов
/ 26 июля 2011

как я написал в своем посте: GreKai.WordPress.com Вы должны были ввести имя компьютера, а не ApplicationPoolIdentity.Это была ваша проблема. Попробуйте!Это должно работать.

Шаги:

Перейдите в общую папку -> щелкните правой кнопкой мыши -> свойства -> безопасность -> изменить -> добавить (как обычно) -> выбратьтипы объектов -> проверить на компьютерах -> теперь введите имя компьютера, с которого работает ваше приложение, где вы опубликовали приложение.

2 голосов
/ 20 июля 2011

Чтобы решить эту проблему, наш администратор сервера создал пользователя домена в контроллере домена под названием domainuser.Затем я перешел к дополнительным настройкам пула приложений IIS 7 и изменил Identity с ApplicationPoolUser на «{имя домена} \ domainuser» (в поле «Пользовательская учетная запись») и ввел пароль для учетной записи.Затем я установил разрешения на запись (в свойствах папки> безопасность) для этой общей папки для {имя домена} \ domainuser.Работало отлично.

...