Назад | Перейти на главную страницу

IIS 7.5: в диалоговом окне «Подключиться как» не удается установить для параметра «Определенный пользователь» идентификатор пула приложений?

У меня есть несколько веб-сайтов и приложений с собственными пулами приложений, использующих AppPoolIdentity. Удостоверения пула приложений хороши тем, что вы можете устанавливать разрешения файловой системы и добавлять пользователей SQL Server на их основе без необходимости управлять какими-либо паролями.

Моя настройка работала хорошо, пока не было решено, что на эти веб-сайты необходимо добавить базовую аутентификацию. Это было бы хорошо, но IIS абсолютно настаивает при использовании удостоверения, которое вы представляете, а не настроенного удостоверения пула приложений, независимо от любых параметров самого пула приложений.

Проблема, кажется, кроется в Connect As диалог. Я настроил его использовать Application user (pass-through authentication). Не говоря уже о путанице в именовании, этот вариант для меня явно не сработает. Поэтому я пытаюсь использовать Specific user вместо.

В Set Credentials диалог является обманчивым, так как он принимает пользователя пула приложений формы IIS AppPool\[appPool] без пароля, но когда вы заходите на сайт, вы получаете это сообщение об ошибке:

HTTP Error 500.19 - Internal Server

The requested page cannot be accessed because the related configuration data for the page is invalid.

Config Error: Can not log on locally to `[websitePath]` as user `IIS AppPool\[appPool]` with virtual directory password

Config File: `\\?\C:\inetpub\temp\apppools\[appPool]\[websiteName].config`

Config Source

  153: `<application path="/" applicationPool="[appPool]">`

  154: `<virtualDirectory path="/" physicalPath="[websitePath]" userName="IIS AppPool\[appPool]" />`

  155: `</application>`

Это ссылка Microsoft на <virtualDirectory> элемент. Открытие этого файла конфигурации ничего полезного не обнаруживает. Я пробовал добавить password="" но безрезультатно.

Есть ли вообще способ достичь того, чего я пытаюсь достичь? В идеале без добавления модуля или другого специального кода на каждый сайт.

В итоге я решил свою проблему, создав урезанный пользовательский модуль на основе CustomBasicAuth и добавление его на уровне сервера (нет возможности настройки, поскольку добавление пользовательской конфигурации на уровне компьютера обременительно - вы не можете просто ссылаться на раздел конфигурации из сборки, как в файлах web.config). Это потребовало нацеливания на .NET 2.0, строгого именования сборки и добавления ее в GAC. Я изменил код, чтобы выполнять только аутентификацию, а не устанавливать участника-пользователя.