Конфигурация общего размещения ASP.NET 2.0/3.5
Введение
СЛУЖБЫ IIS предлагают усовершенствования для динамического содержимого, особенно ASP.NET. В IIS 7 и более поздних версиях модель расширяемости среды выполнения ASP.NET интегрирована в основной сервер. Это позволяет разработчикам в полной мере расширить возможности IIS с помощью ASP.NET 2.0 или более поздней версии и платформа .NET Framework вместо использования API C++ более низкого уровня. Существующие приложения ASP.NET получат выгоду от более тесной интеграции благодаря возможности использования существующих функций, таких как проверка подлинности форм, роли и кэширование выходных данных для всех типов контента, а не только aspx-страниц.
Дополнительные сведения о некоторых ключевых функциях и преимуществах интеграции ASP.NET со СЛУЖБАми IIS см. в разделе Обзор основных веб-серверов. Сведения о том, как установить платформа .NET Framework 3.5, смhttps://www.microsoft.com/net/. на ASP.NET сайте сообщества.
Следующие параметры использовались на веб-сервере в рамках архитектуры общего размещения, упомянутой в статье "Планирование архитектуры общего размещения" в руководстве по размещению. Чтобы узнать больше о том, почему рекомендуется использовать эти параметры, и дополнительные сведения о том, как их настроить, скачайте ASP.NET 4.
Настройка уровней доверия
Уровни доверия позволяют определять правила безопасности для ASP.NET. Они определяют, какие типы операций может выполнять приложение, например чтение с диска или доступ к реестру. Рекомендуемый уровень доверия — Средний, который позволяет выполнять множество распространенных операций, но ограничивает многие из опасных приложений. Если необходимо разрешить больше операций, чем позволяет среднее доверие, необходимо создать пользовательский уровень доверия.
Настройка настраиваемого уровня доверия и настройка дополнительных разрешений
Перейдите к каталогу
%windir%\Microsoft.NET\Framework \{version}\ CONFIG
.Скопируйте файл политики "Средний уровень доверия", web_mediumtrust.config, чтобы создать новый файл политики в том же каталоге
%windir%\Microsoft.NET\Framework\{version}\ CONFIG\
.Переименуйте файл, чтобы указать, что он является пользовательским уровнем доверия, например web_CustomTrust.config.
Откройте новый файл, web_CustomTrust.config и найдите раздел WebPermission .
...
<IPermission class="WebPermission"
version="1" <ConnectAccess> <URI uri="$OriginHost$" /> </ConnectAccess> </IPermission>
...
Измените WebPermission так, чтобы элемент ConnectAccess был удален, а для свойства Unrestricted задано значение true.
...
<IPermission class="WebPermission"
version="1" Unrestricted="true"/>
...
Закомментируйте PrintingPermission и EnvironmentPermission, если известно, что они необходимы для общей среды размещения.
Добавьте новый
<trustLevel>
элемент в<securityPolicy>
раздел файла Web.config, как показано ниже:<location allowOverride="true">
<system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>
Заблокируйте уровень доверия, чтобы его нельзя было изменить приложениями на сервере, установив для элемента location allowOverrideзначение false.
<location allowOverride="false"> <system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>
Настройка содержимого, обслуживаемого с удаленного файлового сервера
При настройке ASP.NET для работы с содержимым, хранящимся на удаленном файловом сервере, необходимо выполнить несколько дополнительных действий.
Когда СЛУЖБЫ IIS получают содержимое с удаленного файлового сервера, они олицетворяют пользователя, прошедшего проверку подлинности. Это либо пользователь, специально заданный в качестве пользователя виртуального каталога, либо, если он не указан, анонимный пользователь. В руководстве iis указано, что пользователь пула приложений должен использоваться в качестве анонимного пользователя, поэтому в этом случае олицетворенным удостоверением является удостоверение пула приложений. Использование одного удостоверения для всего доступа (анонимный, пул приложений и виртуальный каталог) значительно упрощает развертывание.
Чтобы запустить некоторые ASP.NET приложения с удаленного файлового сервера, олицетворенный пользователь должен иметь доступ к временному каталогу Windows и временным каталогам компиляции.
Обслуживание ASP.NET содержимого из общей папки файлового сервера
Предоставьте каталогу разрешение для всех удостоверений пула приложений
%windir%\Temp
, изменив списки управления доступом для папки.Добавьте политику безопасности доступа к коду (CAS), чтобы разрешить ASP.NET соответствующий доступ к общей папке файлового сервера. Для этого откройте командную строку и выполните следующую команду:
%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1. -url "file://\\remotefileserver\content$\*" FullTrust
Настройка параметров сборщика мусора
Платформа .NET framework использует автоматическую сборку мусора для управления памятью для всех приложений. Когда сборщик мусора (GC) решает, что накопилось достаточно мусора и что это эффективно, он выполняет сбор, чтобы освободить память. Этот процесс полностью автоматизирован, но есть параметры, которые могут сделать процесс более эффективным.
Дополнительные сведения о сборке мусора см. в разделе "Глава 5 . Повышение производительности управляемого кода" и в разделе сборки мусора.
Включение сборщика мусора рабочей станции
По умолчанию сборка мусора сервера используется платформа .NET Framework для оптимизации скорости и загрузки ЦП. Для общего размещения, где память чаще всего является ограничением для ряда активных сайтов, следует использовать сборку мусора рабочей станции. Сборка мусора рабочей станции оптимизирует память.
Дополнительные сведения об этом параметре см. в статье базы знаний "Вы можете получить сообщение об ошибке или компьютер перестает отвечать при размещении веб-приложений, использующих ASP.NET на компьютере под управлением Windows Server 2003" (https://support.microsoft.com/kb/911716
).
Отключение параллельного сборщика мусора
Существует три версии сборки мусора: Сервер, Рабочая станция с включенной параллельной поддержкой и Рабочая станция с одновременными отключениями. Одновременная сборка мусора рабочей станции предназначена для клиентских сценариев. Точно так же, как сборка мусора сервера определяет приоритеты пропускной способности и масштабируемости по стоимости памяти, параллельная сборка сборки рабочих станций определяет скорость отклика при затратах на память. Чтобы оптимизировать память, отключите параллельную сборку мусора при использовании сборки мусора рабочей станции.
Включение параметра gcTrimCommitOnLowMemory
Так как сборка мусора сохраняет память для будущих выделений, его зафиксированное пространство может быть больше, чем требуется. Это пространство можно сократить, чтобы справиться с ситуациями, когда существует большая нагрузка на системную память. Если этот параметр включен, сборка мусора оценивает нагрузку системной памяти и переходит в режим усечения, когда нагрузка достигает 90 %. Режим обрезки сохраняется, пока загрузка не опустится ниже 85 %. Если условия позволяют, сборка мусора может решить, что параметр не поможет приложению, и игнорировать его.
Настройка параметров сборки мусора
Перейдите к каталогу
%windir%\Microsoft.NET\Framework\{version}
.Откройте файл aspnet.config и найдите
<gcServer>
элемент . Если элемент не существует, создайте запись с помощью шага 3....
<configuration> <runtime> <gcServer enabled="true"/> </runtime> </configuration> ...
Добавьте в раздел следующие три элемента
<runtime>
:...
<configuration> <runtime> <gcServer enabled="false" />
<gcConcurrent enabled="false" /> <gcTrimCommitOnLowMemory enabled="true" /> </runtime> </configuration> ...
Сохраните файл и закройте его.