Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 1253 / 82 | Оценка: 4.37 / 4.17 | Длительность: 14:27:00
ISBN: 978-5-94774-627-3
Лекция 4:

Настроечные параметры System.Web

Работа с разделом <pages>

Раздел <pages> содержит настроечные параметры уровня страницы. Это те же самые параметры, которые можно установить на самой странице при помощи директивы @page, но они применяются ко всем страницам, на которые влияет данный настроечный файл. Ниже приведен синтаксис раздела <pages>.

<pages buffer="true | false" enableSessionState=
  "true | false | ReadOnly" enableViewState="true | false"
  enableViewStatemac="true | false" autoEventWireup="true | false"
  smartNavigation="true | false" pageBaseType="typename"
  userControlBaseType="typename" validateRequest="true | false" />

Таблица 4.16 содержит перечень свойств раздела <pages>

Таблица 4.16. Свойства <pages>
Свойство Описание
buffer Определяет, должна ли страница использовать буферизацию ответа. Буферизация ответа предотвращает отправку ответа до тех пор, пока он не будет полностью готов. Если буферизация отключена, результаты отправляются пользователю по мере их создания.

true Буферизация ответов включена.

false Буферизация ответов отключена.

enableSessionState Определяет состояние сессий.

true Состояние сессий включено.

false Состояние сессий отключено.

enableViewState Определяет состояние представлений.

true Состояние представлений включено.

false Состояние представлений отключено.

enableViewStatemac Определяет, проверяется ли состояние представлений с помощью кода аутентификации сообщений (MAC). При включении этого режима состояние представления шифруется для гарантирования его неприкосновенности.

true Проверка MAC включена.

false Проверка MAC отключена.

smartNavigation Определяет, включена ли интеллектуальная навигация. Интеллектуальная навигация – это группа поведений на стороне клиента, которая через браузер имитирует поведение консольного приложения. Для эффективного использования интеллектуальной навигации требуется наличие Internet Explorer 5.5.

true Интеллектуальная навигация включена.

false Интеллектуальная навигация отключена.

pageBaseType Определяет класс кода по умолчанию, от которого будут наследоваться страницы.
userControlBaseType Определяет класс кода по умолчанию, от которого будут наследоваться элементы управления пользователя.
autoEventWireup Определяет, связываются ли события страницы с обработчиками событий автоматически. Обычно это разрешено, если используется встраиваемый код, и отключено, если используется отдельный код VS.NET.

true Автоматическое связывание событий включено.

false Автоматическое связывание событий отключено.

validateRequest Определяет, что весь ввод от браузера нужно проверять на наличие потенциально опасных данных. Если опасный код найден, выбрасывается исключение HttpRequestValidationException.

true Ввод от браузера проверяется.

false Ввод не проверяется.

Ниже показан пример раздела <pages>.

<pages buffer="true" enableSessionState="true" enableViewState=
  "true" enableViewStatemac="true" autoEventWireup="false"
  smartNavigation="false" pageBaseType="PageClass1"
  userControlBaseType="UserControl1" validateRequest="true" />

Раздел <pages> включает несколько важных решений для ваших страниц ASP.NET. Эти решения можно принять для каждой отдельной страницы, а можно задать для большой группы файлов страниц при помощи настроечного файла. Давайте посмотрим на эти два решения.

Включать или не включать состояние представлений?

Состояние представлений является важной и полезной функцией ASP.NET, но оно склонно к быстрому росту и может чрезмерно раздуть размер ваших страниц. Использовать ли состояние представлений – это вопрос, который следует задавать себе каждый раз при создании новой страницы или приложения. Если можно создать страницу без использования состояния представления, не теряя при этом ее функциональности, то нужно сделать именно так. Это особенно важно при создании веб-страниц, которые не используют состояние представления, так как эта информация только сделает эти страницы больше по размеру. Состояние представления добавляет в веб-приложения невероятную функциональность и не следует уклоняться от ее использования, но делать это нужно только в случае необходимости.

Использовать или не использовать MAC?

Возможность проверять информацию, содержащуюся в состоянии представления страницы – очень ценная функция, но она по умолчанию отключена, и для этого есть причина. Процедура проверки снижает производительность, и нужно принять во внимание, что ключ шифрует информацию, которая должна быть расшифрована и проверена при ее возврате. Следует ли включать эту функцию, зависит от информации, которую вы храните в состоянии представления. Если ваша страница не использует состояние представления или использует только небольшие элементы управления, которые не передаются на сервер, включение данной функции неоправданно, особенно с точки зрения производительности. Если вы используете состояние представления для хранения значений, содержащих важные данные, особенно те, которые передаются на сервер, включение данной функции является разумным шагом. По умолчанию состояние представления хранится только в тексте, закодированном при помощи метода Base-64, и он легко может быть расшифрован, изменен и снова отправлен на сервер через файл HTML. Проверка MAC позволяет предотвратить модификацию этих данных. Решение об использовании проверки MAC должно приниматься для каждой страницы в отдельности, при условии, что вопросы безопасности не перевешивают небольшое снижение производительности.

Ключевые моменты <pages>

Раздел <pages> дает возможность установить свойства уровня @page для всех файлов, на которые влияют эти разделы настроек.

  • EnableViewStatemac включает проверку MAC для всей информации состояния представления. Проверка гарантирует, что пользователи не могут вмешаться в данные состояния сессии.
  • Решение включать или не включать состояние представления следует принимать для каждой страницы в отдельности, так как многие страницы вообще не требуют включения состояния представления.
Геннадий Щербаков
Геннадий Щербаков

В начале года получил код dreamspark  H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При  его вводе- сообщение что он просрочен.