У меня есть следующий код (от 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 не существует (он существует). Мой следующий шаг — вывести пользователей и группы на машину, чтобы увидеть, что, по мнению моего кода, существует. Между тем, кто-нибудь знает, почему или что вызывает это?
Этот код отлично работает на моей локальной машине, но не работает на моем веб-сервере. Пул приложений работает как сетевая служба, а сетевой сервер имеет ПОЛНОЕ разрешение на папку, в которой находятся файлы. Я заметил этот вопрос, который предполагает, что пользователю требуется разрешение на доступ к каталогу, но проблема не в этом.