Я пытаюсь написать инструмент командной строки, который предоставит 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.
Дайте мне знать, если вам потребуются дополнительные пояснения.