Как правильно настроить удостоверение пула приложений IIS 7?

Развернув мой сайт на IIS7.5, я обнаружил одно странное поведение: когда удостоверение пула приложений остаетсяApplicationPoolIdentity по умолчанию (как рекомендуется вИдентификационные данные пула приложений IIS),Ninject кажется, игнорируется, так как я получаю следующую ошибку при создании самого первого контроллера:

System.InvalidOperationException: произошла ошибка при попытке создать контроллер типа '..MainController'. Убедитесь, что у контроллера есть открытый конструктор без параметров. ---> System.DirectoryServices.DirectoryServicesCOMException: произошла ошибка операций.

Я пытался предоставитьFullAccess вIIS AppPool\<MySiteAppPool> в папку, содержащую сайт (включая все подпапки и файлы), но это ничего не изменило.

Однако, когда я устанавливаю удостоверение пула приложений для любой учетной записи домена (даже простой, без административных привилегий, а также без доступа к папке с сайтом), она работает нормально.

Ninject устанавливается согласноНастройка приложения MVC3 учебник через пакет NuGet.

Я не уверен, если это уместно, сайт должен работать в доменной интрасети с Windows-аутентификацией.

Таким образом, единственная проблема, похоже, связана с идентификацией пула приложений. Насколько я хочу использовать рекомендованный способ, я бы хотел иметьApplicationPoolIdentity, а не учетная запись домена.

С чем это может быть связано? Можно ли все это смешать?

Вот SO поток с похожей проблемой:ASP.NET MVC 4 + Ninject MVC 3 = Для этого объекта не определен конструктор без параметров, Однако и там нет подходящего ответа.

Как предложил удаленный комментарий, я попытался использоватьNetworkSerive как личность. И это сработало правильно. Тем не менее, я думаю, что это не намного лучше, чем непривилегированная учетная запись домена.

РЕДАКТИРОВАТЬ

Внезапно обнаружилась другая зависимость: удостоверение пула приложений используется для проверки подлинности Windows на сервере SQL, хотя я ожидал, что учетные данные пользователя на стороне клиента будут использоваться там.

На основании комментариев

Согласитесь, что к удаленному серверу sql можно получить доступ с аутентифицированными учетными данными через олицетворение.

Однако до сих пор не ясно, в чем проблема с ApplicationPoolIdentity и Ninject.

Статья, упомянутая в самом верху этого вопроса, заставила меня предположить, что это может быть вызвано тем фактом, что виртуальный аккаунтне имеет профиля пользователя, Этот аспект остается для меня неясным, так как все еще можно включить IIS для загрузки профиля пользователя с помощьюLoadUserProfile приписывать. Я не могу понять, что IIS будет загружать, если нет профиля для виртуальной учетной записи?

Там сказано:

IIS не загружает профиль пользователя Windows, но некоторые приложения могут использовать его в любом случае для хранения временных данных. SQL Express является примером приложения, которое делает это. Однако необходимо создать профиль пользователя для хранения временных данных либо в каталоге профиля, либо в кусте реестра. Профиль пользователя для учетной записи NETWORKSERVICE был создан системой и всегда был доступен. Однако с переключением на уникальные идентификаторы пула приложений система не создает ни одного профиля пользователя. Только стандартные пулы приложений (DefaultAppPool и Classic .NET AppPool) имеют пользовательские профили на диске. Профиль пользователя не создается, если администратор создает новый пул приложений.

Однако при желании можно настроить пулы приложений IIS для загрузки профиля пользователя, установив для атрибута «LoadUserProfile» значение «true».

Я нашел следующую ветку на serverfault.com:

Как назначить разрешение активного каталога для удостоверения пула приложений по умолчанию

Там также указано, что удостоверение пула приложений не может работать как сетевая служба, в частности, запрашивать AD.

Ответы на вопрос(2)

Ваш ответ на вопрос