Изменение прав доступа к файлу приводит к IdentityNotMappedException (когда код запускается на веб-сервере) - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть следующий код ( из 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 не существует (он существует). Мой следующий шаг - вывести пользователей и группы на машину, чтобы увидеть, что мой код считает существующим. А пока кто-нибудь знает, почему или чем это вызвано?

Этот код отлично работает на моем локальном компьютере, но не при запуске на моем веб-сервере. Пул приложений работает как сетевая служба, и у сетевого сервера есть ПОЛНОЕ разрешение для папки, в которой находятся файлы. Я заметил этот вопрос , который предполагает, что пользователю необходимо разрешение на каталог - но это не проблема.

1 Ответ

0 голосов
/ 14 сентября 2011

Чтобы обойти это, измените аутентификацию на веб-сайте, чтобы она работала как «Пул приложений» (в отличие от анонимного).Не самый лучший ответ, но попробовал все остальное.

...