Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пак Новакова + / LabASP2(1-8)СоловьёвЯрославцева.doc
Скачиваний:
47
Добавлен:
03.06.2014
Размер:
2.59 Mб
Скачать

Часть 2-4. Создание элементов управления asp.Net и их использование

Описание работы:

В данной работе демонстрируется использование трассировки. Будет создана веб-

страница, на которой отображается запрос на ввод пользователем имени, а затем

отображается имя. Страница также сохраняет имя в файл Cookie, благодаря чему

пользователю не придется вводить его повторно.

Описание задания:

Шаг 1. Создание веб-узла на базе файловой системы

  1. Откройте VisualWebDeveloper.

  2. В меню Файл выберите пункт “Создать веб-узел”. Откроется диалоговое окно “Новый веб-узел”.

  3. В разделе Установленные шаблоны Visual Studio выберите “Веб-узел ASP.NET”.

  4. В крайнем правом поле Расположение введите имя папки, где следует хранить

страницы веб-узла. Например, введите имя папки “C:\WebSites”.

  1. В списке Язык выберите язык программирования, с которым вы предпочитаете

работать.

  1. Добавление кода

  1. В обозревателе решений щелкните правой кнопкой мыши элемент FirstWebPage.aspx и выберите пункт “Перейти к коду”.

  2. Введите следующий код в определении класса.

protected void buttonDisplayName_Click(Object sender, EventArgs e) {

labelName.Text = Server.HtmlEncode(textName.Text);

Response.Cookies["username"].Value = labelName.Text; }

Этот код выполняет следующие задачи.

• Считывает значение элемента управления TextBox и отображает значение в элементе управления Label. При выполнении этой логики код вызывает метод HtmlEncode, который преобразовывает потенциально исполняемые символы HTML, например правую угловую скобку(<), в эквивалентные отображаемые символы. Эта мера безопасности предназначена для предотвращения использование скриптов. Подробные сведения см. в разделе Script Exploits.

• Создает файл Cookie с именем username, в котором сохраняется значение,

введенное пользователем.

  1. Добавьте следующий метод либо под, либо над обработчиком Click, который был

создан на предыдущем этапе.

void Page_Load(Object sender, EventArgs e) {

if(Request.Cookies["username"] != null){

labelName.Text = Request.Cookies["username"].Value; } }

  1. Тестирование страницы

  1. Нажмите клавиши CTRL+F5 для запуска страницы.

  2. При отображении страницы введите имя в текстовом поле, а затем нажмите кнопку

«Отправить». Обратите внимание, что даже если нажатие кнопки «Отправить» приводит к

обратной передаче страницы на сервер, имя не отображается.

  1. Закройте браузер.

Шаг 2. Использование трассировки для поиска ошибок

В этом разделе будет включена трассировка на странице. Вы проверите результаты

трассировки, а затем добавите пользовательские сообщения трассировки, которые

позволят выявить ошибки на странице.

  1. Включение трассировки для страницы

  1. Откройте страницу FirstWebPage.aspx и перейдите в представление конструирования.

  2. В окне «Свойства» щелкните DOCUMENT в списке. Это отображает свойства для страницы.

  3. Установите для параметра Trace (Трассировка) значение true. Задание трассировки фактически осуществляется как часть директивы@ Page. Просмотреть это можно путем переключения в представление «Исходный код» и изучения первой строки на странице. Директива@ Page будет иметь приблизительно следующий вид:

<%@ Pagelanguage="C#"Trace="true" %>

  1. Нажмите клавиши CTRL+F5 для запуска страницы.

Страница откроется в браузере. В верхней часть отображается текст и элементы

управления, добавленные на страницу.

  1. В поле введите имя, а затем нажмите кнопку «Отправить». Для параметра Request Type (Тип запроса) теперь установлено значение POST. Это означает, что выполнена обратная передача страницы. Нажатие кнопки «Отправить» не приводит к отображению страницы.

  2. Закройте браузер.

  1. Добавление пользовательских результатов трассировки

  1. Добавьте следующие выделенные строки в обработчик buttonDisplayName_Click,

который был создан на этапе «Добавление кода» ранее в этой лабораторной работе:

protected void buttonDisplayName_Click(Object sender, EventArgs e) {

Trace.Warn("debugging", "Start buttonDisplayNameClick handler");

labelName.Text = Server.HtmlEncode(textName.Text);

Response.Cookies["username"].Value = labelName.Text;

Trace.Warn("debugging", "End buttonDisplayName Click handler"); }

Метод Warn добавляет пользовательские сообщения к результатам трассировки.

Хотя класс TraceContext также предоставляет метод Write, метод Warn является

более полезным, так как результат отображается цветом.

  1. 2. Нажмите клавиши CTRL+F5 для запуска страницы.

  1. Нажмите кнопку «Отправить».

При проверке результатов трассировки обратите внимание, что результаты не

содержат красного текста. На основании этого можно сделать заключение, что

обработчик Click для кнопки «Отправить» не вызывается.

  1. Закройте браузер.

  2. В режиме исходного кода добавьте следующий выделенный атрибут к элементу

<asp:button>:

<asp:button id="buttonDisplayName" runat="server" text="Submit"

onclick="buttonDisplayName_Click" />

  1. Нажмите клавишиCTRL+F5 для запуска страницы.

  2. Введите имя в окне, а затем нажмите кнопку «Отправить».

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

  1. Проверка файла Cookie

1. Закройте браузер.

2. Нажмите клавиши CTRL+F5 для запуска страницы.

Ожидается, что имя, введенное ранее, автоматически появится в метке, так как обработчик Click для кнопки «Отправить» задает файл Cookie, а обработчик

Page_Load считывает его при следующей обратной передаче. Однако метка

никогда не задается из файла Cookie.

3. Закройте браузер.

4. В режиме исходного кода добавьте следующую выделенную строку в обработчик

buttonDisplayName_Click:

protected void buttonDisplayName_Click(Object sender, EventArgs e) {

Trace.Warn("debugging",

"Start buttonDisplayName Click handler");

labelName.Text = Server.HtmlEncode(textName.Text);

Response.Cookies["username"].Value = labelName.Text;

Response.Cookies["username"].Expires=

DateTime.Now.AddMinutes(30);

Trace.Warn("debugging", "End buttonDisplayName Click handler"); }

Новая строка явно задает срок действия файлаCookie, который истекает через30

минут.

5. Нажмите клавиши CTRL+F5 для запуска страницы.

6. Введите имя в окне, а затем нажмите кнопку «Отправить».

Имя отображается в обозревателе. В блоке ResponseCookiesCollection(Коллекция

ответных файлов Cookie) результатов трассировки отображается заданный файл

Cookie.

7. Закройте браузер.

8. Нажмите клавиши CTRL+F5 для запуска страницы.

На этот раз имя вводится автоматически. В блоке результатов трассировки Запрос

коллекцииCookies теперь отображается, что браузер передает файл Cookie на

страницу.

Шаг 3. Отображение сведений трассировки в окне средства просмотра трассировки.

Задание страницы для отображения результатов трассировки полезно только при работе с

отдельной страницей. Однако, если осуществляется работа с несколькими страницами в

приложении, включение и выключение трассировки для каждой страницы может быть

неудобным. Более того, отображение сведений о результатах трассировки на странице при

ее выполнении может мешать пользователю. И к тому же, вы, возможно, не хотите, чтобы

результаты трассировки отображались для пользователей приложения.

Можно настроить трассировку не только на уровне страницы, но и на уровне приложения.

Задание трассировки на уровне приложения предоставляет два преимущества:

• Можно одновременно включать и выключать трассировку для всех страниц.

• Можно отображать результаты трассировки в отдельном окне обозревателя—

средстве просмотра трассировки, — а не в качестве части результатов для

страницы.

Если трассировка на уровне приложения включена, ASP.NET сохраняет результаты

трассировки всех страниц в кэше. Можно задать некоторые параметры, чтобы указать

количество страниц результатов трассировки, сохраняемых в кэше, и сохранение самых

последних либо наиболее старых записей. Затем можно вызвать средство просмотра

трассировки в обозревателе и выбрать проверяемый результат трассировки.

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

и использовано средство просмотра трассировки для проверки результата трассировки.

  1. Включение трассировки на уровне приложения

1. Перейдите в режим исходного кода, а затем в директиве@ Page в верхней части

странице удалитеTrace="true".

2. В меню Веб-узел выберите “КонфигурацияASP.NET”. Появляется средство администрирования веб-узла ASP.NET.

3. Щелкните Конфигурация приложения.

4. В группе Debugging and Tracing (Отладка и трассировка) щелкните Configure

debugging and tracing (Настройка отладки и трассировки), а затем установите

флажок Capture tracing information (Запись сведений о трассировке).

Этот параметр включает трассировку на уровне приложения.

В данной лабораторной работе можно использовать для оставшихся параметров

значения по умолчанию. ASP.NET кэширует до10 записей результатов

трассировки(либо10 обратных передач одной страницы или меньшее число

обратных передач каждой из нескольких страниц) и кэширует самые последние

записи.

5. Закройте средство администрирования веб-узлаASP.NET.

Удалите атрибут Trace для страницы.

  1. Просмотр результатов трассировки в отдельном окне обозревателя

  1. Нажмите клавиши CTRL+F5 для запуска страницы.

Обратите внимание, что на странице больше не отображаются результаты

трассировки. Страница отображается так, как ее видит пользователь.

  1. Введите имя в окне и нажмите кнопку «Отправить», чтобы убедиться, что страница

  2. работает правильно.

  3. Откройте новое окно обозревателя.

  4. В поле Адрес браузера введите URL-адрес сайта, указав trace.axd в качестве имени

страницы, с которой осуществляется работа.

Например, если имеется следующий URL-адрес страницы:

http://localhost:8081/WebSite/Default.aspx

http://localhost:8081/WebSite/trace.axd

В обозревателе отображается текущий кэш записей трассировки.

  1. Щелкните Просмотр сведений для последней (наиболее новой) записи

трассировки.

В окне обозревателя отображаются результаты трассировки, аналогичные тем

сведениям, которые вы видели на предыдущих этапах лабораторной работы, но эти

результаты не указываются в конце страницы.

  1. В результате этого действия создается новая запись журнала трассировки.

  1. Перейдите к экземпляру обозревателя, который содержит сведения.

  2. В обозревателе щелкните Назад для возврата к списку записей трассировки, а затем

щелкните Обновить, чтобы обновить список записей.

  1. Закройте оба окна обозревателя.

Шаг4. Создание пользовательских результатов трассировки

Как вы видели, результаты трассировки содержат большой объем сведений, которые

иногда являются излишними. Например, может возникнуть необходимость ограничить

результаты трассировки только результатами трассировки, созданными самостоятельно.

Трассировка позволяет читать содержимое буфера трассировки и выборочно отображать

необходимую информацию.

Для создания пользовательских результатов трассировки обработайте событие

TraceFinished для объекта Trace. В обработчике событий можно прочитать буфер

трассировки.