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