У меня есть следующий код ( из msdn ) для установки прав доступа к файлу:
' Adds an ACL entry on the specified file for the specified account.
Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
' Get a FileSecurity object that represents the
' current security settings.
Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)
' Add the FileSystemAccessRule to the security settings.
Dim accessRule As FileSystemAccessRule = New FileSystemAccessRule(account, rights, controlType)
fSecurity.AddAccessRule(accessRule)
' Set the new access settings.
File.SetAccessControl(fileName, fSecurity)
End Sub
Я называю это с помощью группы IIS_IUSRS
(я тоже пробовал ComputerName/IIS_IUSRS
) и пытаюсь применить FileSystemRights.FullControl
Но приводит к этой ошибке:
System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated
Что говорит о том, что IIS_IUSRS не существует (он существует). Мой следующий шаг - вывести пользователей и группы на машину, чтобы увидеть, что мой код считает существующим. А пока кто-нибудь знает, почему или чем это вызвано?
Этот код отлично работает на моем локальном компьютере, но не при запуске на моем веб-сервере. Пул приложений работает как сетевая служба, и у сетевого сервера есть ПОЛНОЕ разрешение для папки, в которой находятся файлы. Я заметил этот вопрос , который предполагает, что пользователю необходимо разрешение на каталог - но это не проблема.