Я следующий код (from msdn), чтобы установить права доступа к файлам:Изменение прав доступа к файлам приводит IdentityNotMappedException (когда код работал на веб-сервере)
' 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 не существует (он делает). Мой следующий шаг - вывести пользователей и группы на машине, чтобы увидеть, что мой код действительно существует. В то же время кто-нибудь знает, почему, или что вызывает это?
Этот код отлично работает на моей локальной машине, но не при запуске на моем веб-сервере. Пул приложений работает как сетевой сервис, а Network Server имеет ПОЛНОЕ разрешение на папку, в которой находятся файлы. Я заметил, что this question предлагает, чтобы пользователю было необходимо разрешение в каталоге, но это не проблема.