Итак, позвольте мне сначала заявить об отказе от ответственности: я обычно не буду использовать IIS на контроллере домена, но это то, что у меня есть, и я не могу это изменить в данном случае.
У меня есть веб-служба WCF, которую мне нужно разместить здесь. Я хотел бы иметь возможность использовать удостоверение пула приложений из IIS для предоставления разрешений файловой системы, а также разрешений на запуск и активацию в службах компонентов. Я не могу найти учетную запись, когда ищу ее, пытаясь выбрать «IIS AppPool \ DefaultAppPool».
Кто-нибудь знает, возможно ли это вообще на контроллере домена 2008R2?
Предоставление разрешений для удостоверений пула приложений через пользовательский интерфейс в Windows 2008R2 может иногда не работать, но может быть достигнуто с помощью пары инструментов командной строки.
Разрешения NTFS:
Использовать ICACLS
инструмент командной строки для установки разрешений NTFS:
icacls c:\wwwroot /grant "IIS AppPool\DefaultAppPool":(CI)(OI)(M)
Вышеупомянутое настраивает DefaultAppPool
личность, чтобы иметь права на изменение c:\wwwroot
с наследованием файлов и папок. В пользовательском интерфейсе это выглядит так:
и в расширенном пользовательском интерфейсе разрешений:
Разрешения на запуск и активацию DCOM и доступ:
Опять же, пользовательский интерфейс может быть немного странным, когда дело доходит до IIS AppPool\<ident>
учетных записей и нет встроенного инструмента командной строки для настройки Разрешения на запуск и активацию и Разрешения на доступ. Вы могли бы попробовать установка этих значений в реестре но если вы не знаете, как создать сериализованный ACL для LaunchPermission
и AccessPermission
будет тяжело.
Однако еще не все потеряно. Есть инструмент под названием dcomperm.exe
который включен как образец проекта в Microsoft Windows SDK для Windows 7 и .NET Framework 4.
Этот парень написал об этом здесь:
Еще один шаг ближе к установке SharePoint по сценарию, на 100% с помощью DcomPerm.exe
Вы можете попробовать построить его самостоятельно или скачать готовый двоичный файл из его Microsoft Live SkyDrive.
Использовать dcomperm.exe
это вам нужно знать AppID
вашего приложения DCOM. Вы можете сделать это, указав его на вкладке «Общие» в свойствах конфигурации DCOM вашего приложения. Например, в качестве рабочего примера я выбрал библиотеку IIS CertObj:
Вы можете поместить курсор в поле «Идентификатор приложения» и выделить все поле, не забудьте также включить фигурные скобки.
Затем откройте командную строку (от имени администратора). Чтобы предоставить удостоверению пула приложений разрешения на локальный запуск и локальную активацию, выполните:
DComPerm.exe -al {62B8CCBE-5A45-4372-8C4A-6A87DD3EDD60} set "IIS AppPool\DefaultAppPool" permit level:ll,la
Куда:
-al
= Измените или укажите разрешение на запуск и активацию
{62B8CCBE-5A45-4372-8C4A-6A87DD3EDD60}
= идентификатор приложения, который мы скопировали из пользовательского интерфейса DCOMCNFG
set "IIS AppPool\DefaultAppPool"
= установить эту личность
permit
= установить флаг разрешения
ll
= Локальный запуск
la
= Локальная активация
В пользовательском интерфейсе это выглядит так:
Похоже, что если вы используете функциональный уровень домена раньше, чем 2008, встроенные учетные записи IIS не могут быть разрешены из графического интерфейса.
Поднимите функциональный уровень домена как минимум до 2008 или попробуйте запустить JScript, предоставленный Microsoft, в KB946139
Также обратите внимание, что запуск веб-приложений на контроллерах домена НЕ рекомендуется по нескольким причинам: http://blogs.technet.com/b/abizerh/archive/2009/07/16/should-iis-be-installed-on-domain-controller.aspx
Это касается проблем с IIS 6 / Windows 2k3, но некоторые из них все еще верны, например. проблема DCPROMO