Исключения безопасности в опции ASP.NET и Load User Profile в IIS 7.5

После развертывания новой версии нашего ASP.NET 2,0 приложения это начало повышать исключение безопасности: „Система. Безопасность. SecurityException: Запрос на разрешение типа 'Система. Сеть. AspNetHostingPermission, Система, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' перестали работать “..

После быстрого исследования в Интернете мы смогли разрешить этот isse установкой „Load User Profile “к Истинному в пуле приложений IIS 7.5. Это решение также несколько раз упоминается здесь на stackoverflow:

Однако мы не могли найти причину, почему это должно быть верно. Мы рассмотрели все изменения в новой версии (с удовольствием были только некоторые), но ничто не нашел подозрительным (никакой доступ к реестру или временным данным как некоторые статьи предложенный и т.д.). Кто-либо мог дать нам подсказки, когда приложение ASP.NET разместило в наборе опции Load User Profile “„потребностей IIS 7.5 к Истинному?

Подробнее:

  • Пул приложений:.NET 2.0; Управляемый Конвейерный Режим - Классик; Идентификационные данные – пользовательская учетная запись домена
  • В IIS 6.0 (W2K3): Старая и новая версия приложения хорошо работает
  • В IIS 7.5 (W2K8-R2): Старая версия приложения хорошо работает; новая версия приложения повышает исключение безопасности – это начинает работать после установки „Load User Profile “к Истинному

Спасибо!

Править: Мы наконец нашли причину этой проблемы! Наш администратор использовал другую технику для копирования новой версии приложения от подготовки среды к продуктивной среде. Он использовал веб-сервер в качестве посредника. После donwloading заархивированные артефакты сборки конечных версий к продуктивной среде и затем разархивации файлов, они были все еще отмечены, как "заблокировано", потому что они произошли из другого компьютера. См. также https://superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a. ASP.NET затем логически выполняет эти двоичные файлы в частичном доверии вместо полного доверия, и это на самом деле вызывало упомянутые исключения безопасности в нашем приложении.

Установка "Профиля пользователя Загрузки" к Истинному зафиксировала исключения безопасности как побочный эффект. Если "Профиль пользователя Загрузки" имеет значение false, то наше приложение (не наш код, возможно, некоторая.NET BCL или внешний блок) пытается запросить основную информацию о каталоге "C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\Temporary Internet Files", которому не позволяются идентификационные данные пула приложений:

  • С полным доверием: доступ запрещен к этой операции запроса не повышает исключения
  • С частичным доверием: доступ запрещен к этой операции запроса повышает исключение безопасности

Если "Профиль пользователя Загрузки" имеет значение true, то временный профиль в каталоге Users создается каждый раз, когда пул приложений запускается. Наше приложение затем пытается запросить информацию о каталоге "Temporary Internet Files" этого профиля, которому позволяются идентификационные данные пула приложений. Таким образом никакое исключение не повышено даже с частичным доверием.

Действительно хорошая сессия поиска и устранения неисправностей!:)

18
задан Community 23 May 2017 в 11:47
поделиться

1 ответ

Еще один пример, когда настройка "Load User Profile" может помочь вам, это использование временных файлов. Иногда это использование может быть косвенным. Например, SQL Express может делать это в некоторых ситуациях.

Поэтому мой совет. Отключите "Load User Profile" и изучите %TEMP%. Затем попробуйте дать доменной учетной записи, используемой для пула приложений, полный доступ (или изменить доступ) к директории из %TEMP%. Возможно, это решит вашу проблему.

Еще один совет - используйте Process Monitor (см. http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx), чтобы определить, какие части профиля пользователя будут использоваться (или получать ошибку "access denied") в момент, когда вы получаете "System.Security.SecurityException: Запрос на разрешение типа 'System.Web.AspNetHostingPermission'" исключение.

7
ответ дан 30 November 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: