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

Упражнение 3 – отображение сведений трассировки в окне средства просмотра трассировки

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

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

  1. В режиме исходного кода в директиве @ Page удалили Trace="true".

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

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

Рис. 3. trace.axd

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

  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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace PPP_lab4

{

public partial class SecondWebForm : System.Web.UI.Page

{

protected void ButtonDisplayName_Click(object sender, EventArgs e)

{

Label1.Text = Server.HtmlEncode(TextBox1.Text);

Response.Cookies["Username"].Value = Label1.Text;

}

protected void Page_Load(object sender, EventArgs e)

{

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

{ Label1.Text = Request.Cookies["Username"].Value; }

}

}

}

Упр. 2

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace PPP_lab4

{

public partial class SecondWebForm : System.Web.UI.Page

{

protected void ButtonDisplayName_Click(object sender, EventArgs e)

{

Label1.Text = Server.HtmlEncode(TextBox1.Text);

Response.Cookies["Username"].Value = Label1.Text;

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

Label1.Text = Server.HtmlEncode(TextBox1.Text);

Response.Cookies["Username"].Value = Label1.Text;

Response.Cookies["Username"].Expires = DateTime.Now.AddMinutes(30);

Trace.Warn("debugging","end ButtonDisplayName Click handler");

}

protected void Page_Load(object sender, EventArgs e)

{

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

{ Label1.Text = Request.Cookies["Username"].Value; }

}

}

}

Упр. 4

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

public partial class FirstWebPage : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (Request.Cookies["username"] != 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)");

} }

void TraceFinished(object sender, TraceContextEventArgs e)

{

foreach (TraceContextRecord traceRecord in e.TraceRecords) {

if (traceRecord.Category == "debugging"){

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

}}}

protected void buttonDisplayName_Click(Object sender, EventArgs e){

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

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

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");

}}

FirstWebPage.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FirstWebPage.aspx.cs" Inherits="FirstWebPage" Trace="true"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:TextBox ID="textName" runat="server"></asp:TextBox>

<asp:Button ID="buttonDisplayName" runat="server" Text="отправить" OnClick = "buttonDisplayName_Click"/>

<asp:Label ID="labelName" runat="server"></asp:Label>

</div>

</form>

</body>

</html>

Результат выполнения программы:

Рис. 4. Итоговый результат

Вывод:

Выполнив данную лабораторную работу, мы познакомились с трассировкой, одним из способов поиска ошибок в программе. При трассировке отображаются сообщения о действиях, происходящих во время обработки страницы. Использовались разные способы трассировки (например, для поиска ошибок).