Не удается получить разрешения, требуемые IIS. Включено «Полное доверие» и загрузка профиля пользователя в пул приложений «True»

#asp.net #iis

#asp.net #iis

Вопрос:

Настройка

В пуле приложений .NET 2.0 на сервере-A. Запущено приложение IIS 6. IIS 7 Server-B должен размещать ту же кодовую базу под другим URL. Я создал виртуальный каталог под веб-сайтом Server-B по сетевому пути приложения на сервере-A. Я включил этот виртуальный каталог на сервере B как приложение, работающее в собственном пуле приложений .NET 2.0 в классическом режиме. Оба пула приложений выполняются от имени одной учетной записи домена, которая имеет доступ к этой папке.

Проблема

При доступе к сайту с сервера-A все работает нормально. Однако доступ к нему с сервера-B генерирует печально известное «Требуемые разрешения не могут быть получены.» ошибка.

Я пытался найти решение этой проблемы в течение двух дней. Двумя наиболее распространенными решениями были проверка уровня доверия CLR на сервере-B или установка для свойства Load User Profile в пуле приложений значения «True». Поскольку у меня есть полные права администратора, я устанавливаю уровень доверия на полный и устанавливаю для профиля значение «True». Строгое присвоение имен всем сборкам приложения и добавление их в GAC — это не то, к чему я хочу обратиться.

Я уверен, что мне просто где-то не хватает какой-то конфигурации. Есть идеи? Спасибо.

Комментарии:

1. Я боролся с этим в течение последних двух недель. Так и не найдено решение. Изменены сценарии развертывания для копирования обновленного кода в оба расположения.

Ответ №1:

У нас однажды была похожая проблема.

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

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

Комментарии:

1. Безуспешно пытался войти в систему как пользователь пула приложений. Вызов MSDN, вот я и пришел.

Ответ №2:

Вручную убедитесь, что пользователь может получить доступ к этому общему ресурсу. Попробуйте войти в Windows как этот пользователь, а затем получить доступ к этому общему ресурсу (или подделать его чем-то вроде «runas / User:{Domain UserName} net use { server share}»).

Также попробуйте загрузить ShareMonitor везде, где действительно находятся файлы. Он должен сообщить вам, какая учетная запись пользователя пытается получить доступ к данному общему ресурсу. Возможно, это не та учетная запись, о которой вы думаете. Я не могу вспомнить, была ли это эта программа или нет, но я использовал что-то очень похожее в прошлом, чтобы выяснить действительно странную проблему с разрешениями.

Это должно определить, является ли проблема с доступом к файлам. Если это не так, то все, что я могу сказать, это убедиться, что у вас есть ASP.NET включено (на сервере Windows это отдельная опция).

Также проверьте права доступа к файлам на вашем «Временном ASP.NET Каталог «Файлы». Мне пришлось явно добавить пользователям доступ на запись к этому раньше, чтобы все заработало.

Комментарии:

1. В обоих полях учетная запись домена пула приложений была назначена администратором сервера. Авторизовался в обоих окнах и просматривал файлы обоими способами. Нет кубиков. Как я уже говорил выше, время вызова MSDN.

2. Кстати, для net use инструкции вы можете использовать net use \servershare /user:domainusername , а не вызывать runas : o)

Ответ №3:

в моем случае в моем пуле приложений IIS было LoadUserProfile = false, поэтому он не загружал профиль идентификатора пула приложений (учетная запись домена). Это привело к невозможности получения разрешений, хотя мои файлы / папки Webroot (включая / bin) имели правильные разрешения. Установка LoadUserProfile = true устранила проблему в моей настройке.

Ответ №4:

Я бы установил этот атрибут идентификации пулов приложений (в дополнительных настройках) в качестве администратора. Таким образом, ваше приложение будет работать на сервере точно так же, как оно работает в локальной установке.