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

  1. На странице, с которой осуществлялась работа, добавьте в обработчик Page_Load

следующий выделенный код:

void Page_Load(object sender, EventArgs e)

{

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

{

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

}

Trace.TraceFinished += new

TraceContextEventHandler(this.TraceFinished);

if (Page.IsPostBack)

{

Trace.Write("debugging", "Page load (postback)");

}

else

{

Trace.Write("debugging", "Page load (first time)");

} }

  1. Создайте следующий метод для обработки событий TraceFinished:

void TraceFinished(object sender, TraceContextEventArgs e)

{

foreach(TraceContextRecord traceRecord in e.TraceRecords)

{

if(traceRecord.Category == "debugging")

{

Response.Write("<br>" + traceRecord.Message);

} } }

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

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

Когда страница отображается в обозревателе, появляется сообщение Page load (first

time) (Загрузка страницы(в первый раз)), но другие результаты трассировки

отсутствуют.

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

Появляются сообщения

Page load (postback) (Загрузка страницы(обратная передача)),

Start buttonDisplayName Click handler (Запуск обработчика buttonDisplayName Click),

End buttonDisplayName Click handler (Завершение обработчика buttonDisplayName Click).

Ход выполнения лабораторной работы Упражнение 1 - Создание веб-узла на базе файловой системы

  1. Создадим новый веб-узел

  2. В обозревателе решений нажмем на кнопку “Добавить новый элемент”.

  3. Добавим «Форма Web Forms»

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

TextBox - ID: textName; Text: (пусто).

Button - ID: buttonDisplayName; Text: отправить.

Label - ID: labelName; Text: (пусто).

  1. Перейдем в исходный код и в определение класса добавим следующий код:

protected void buttonDisplayName_Click(Object sender, EventArgs e) {

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

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

  1. Добавим следующий метод в определение класса:

void Page_Load(Object sender, EventArgs e) {

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

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

  1. Протестируем работу программы

Рис. 1. Результат

Как и предполагалось, при нажатии кнопки, ничего не произойдет. Чтобы это исправить, проделаем следующие упражнения.

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

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

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

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

  1. Включили в свойствах FirstWebPage.aspx трассировку.

  2. Запустим нашу страницу. Мы увидим информацию о трассировке.

  3. Добавим пользовательские результаты трассировки, для чего добавим код в ранеемсозданный метод:

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;

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

  1. Запустим нашу страницу.При проверке результатов трассировки обратим внимание, что результаты несодержат красного текста. На основании этого можно сделать заключение, что обработчик Click для кнопки «Отправить» не вызывается.

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

<asp:button>:

<asp:button id="buttonDisplayName" runat="server" text="Submit" onclick="buttonDisplayName_Click" />

  1. Запустим страницу

Обратим внимание, что введенное имя отображается в метке.

Рис. 2. Полученный результат на данном этапе

Рис. 2.2 - Отображение пользовательских результатов трассировки.

  1. Если мы закроем страницу, то при открытие необходимо добиться, чтобы введенное имя отображалось в течении, например, 30-ти минут.

  2. Для этого в режиме исходного кода добавим следующую выделенную строку в обработчик 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");

}

  1. Запустим страницу. Убедимся в корректной работе с файлом Cookie.