Код C # для автоматического предоставления IIS доступа на запись к папке в Windows Server 2008? В настоящее время выдает исключение

Я пытаюсь написать инструмент командной строки, который предоставит IIS7.5 на сервере Windows 2008 доступ на запись к папке в wwwroot, чтобы веб-приложение имело доступ для записи в определенную папку в своем базовом каталоге. Раньше вы могли сделать это, назначив группу IIS_WPG в папке, предоставляя этой группе доступ на изменение.

В Server 2008 я пытаюсь сделать то же самое с IIS_IUSRS, но возникает исключение.

Вот код:

private static void ManagePermissions(string directory, string account, FileSystemRights rights, AccessControlType controlType, bool addAccess)
{
    DirectoryInfo directoryInfo = new DirectoryInfo(directory);
    DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();

    if (addAccess)
        directorySecurity.AddAccessRule(
            new FileSystemAccessRule(account, rights, controlType));
    else
        directorySecurity.RemoveAccessRule(
            new FileSystemAccessRule(account, rights, controlType));

    directoryInfo.SetAccessControl(directorySecurity);
}

Вызов этого метода выглядит следующим образом:

ManagePermissions(
                  "c:\inetpub\wwwroot", 
                  "MACHINENAME\IIS_IUSRS", 
                  FileSystemRights.Modify, 
                  AccessControlType.Allow, 
                  true);

При выполнении этого вызова ManagePermissions возникает исключение со следующим типом и сообщением:

System.Security.Principal.IdentityNotMappedException: 
    Some or all identity references could not be translated.

Я проверял несколько раз, чтобы убедиться, что MACHINENAME \ IIS_IUSRS является точным совпадение с пользователем в локальном диспетчере пользователей на машине, на которой выполняется этот код. Этот компьютер не входит в домен Windows.

Дайте мне знать, если вам потребуются дополнительные пояснения.

5
задан Mark At Ramp51 7 December 2010 в 11:06
поделиться