После развертывания новой версии нашего 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 к Истинному?
Подробнее:
Спасибо!
Править: Мы наконец нашли причину этой проблемы! Наш администратор использовал другую технику для копирования новой версии приложения от подготовки среды к продуктивной среде. Он использовал веб-сервер в качестве посредника. После 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" этого профиля, которому позволяются идентификационные данные пула приложений. Таким образом никакое исключение не повышено даже с частичным доверием.
Действительно хорошая сессия поиска и устранения неисправностей!:)
Еще один пример, когда настройка "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'" исключение.