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

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

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


person Mr Shoubs    schedule 13.09.2011    source источник


Ответы (1)


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

person Mr Shoubs    schedule 14.09.2011