Трассировка
Технология ASP.NET предоставляет широкие возможности для трассировки программы. Если атрибуту Trace (Трассировка) страницы присвоить значение true (истина), то выходная трассировочная информация, генерируемая ASP.NET, будет выводиться в окне браузера. Кроме того, можно вывести свою трассировочную информацию. Для этого используется метод Write (Запись) объекта TraceContext. Чтобы получить доступ к этому методу, используется свойство Trace (Трассировка) класса Page (Страница).
Страница HelloTrace.aspx иллюстрирует использование трассировки при записи информации в объект Response (Ответ).
<!– HelloTrace.aspx › <%@ Assembly Name="HelloTrace" %> <%@ Page Inherits=MyHelloTrace Trace = "true" %> <! – Трассировка Страницы – > <HTML> <HEAD> </HEAD> <BODY> <!– ТЕЛО › <FORM RUNAT="SERVER">Your name:  <asp:textbox id=txtName Runat="server"> </asp:textbox> <p><asp:button id=cmdEcho onclick=cmdEcho_Click Text="Echo" runat="server" tooltip="Click to echo your name"> <! – подсказка – > </asp:button></p> <asp:label id=lblGreeting runat="server"> </asp:label> <P></P> </FORM> </BODY> <! – тело – > </HTKL>
Класс MyHelloTrace, реализованный в виде сборки rielloTrace.dll, содержит следующий код, который записывает вывод трассировки:
void Page_Init(Gtoect *senaer, EventArgs *e)
{
Page *p = dynamic_cast<Page *>(sender);
// Страница "р = dynarpic__cast <Страница *> (отправитель);
TraceContext *trace = p › get_Trace();
trace › Write("Page_Init<br>"); // трассировка › Запись
tгасе › Write (String::Concat(
// трассировка › Запись (Строка)
"txtName = ", txtName › Text, "<br>")); // Текст
trace › Wnte (String::Concat (
// трассировка › Запись (Строка)
"IblGreeting = ",iblGreeting › Text, "<br>")); // Текст
}
void Page_Load(Object *sender, EventArgs *e)
{
Page *p = dynamic__cast<Page *>(sender);
// Страница *р = dynamic_cast <Страница *> (отправитель);
TraceContext *trace = p › get_Trace();
trace › Write("Page_Load<br>"); // трассировка › Запись
trace › Write (String::Format(
// трассировка › Запись (Строка:: Формат)
"IsPostBack = (0}<br>", _box (IsPostBack))
};
trace › Write(String::Concat(
// трассировка › Запись (Строка)
"txtName = ", txtName › Text, "<br>")); // Текст
trace › Write(String::Concat(
// трассировка › Запись (Строка)
"IblGreeting = ", lblGreeting › Text, "<br>")); // Текст
}
void Page_PreRender(Object ^sender, EventArgs *e) –
{
Page *p = dynamic_cast<Page *>(&ender);
// Страница *р = aynamic_cast <Страница *> (отправитель);
TraceContext wtrace = p › get_Trace();
trace › Write("Fage_PreRendei<br>"); // трассировка › Запись
trace › Wnte (String:: Concat
// трассировка › Запись (Строка)
"txtName == ", txtName › Text, "<br>")); // Текст
trace › Write(String::Concat(
// трассировка › Запись (Строка)
"IblGreeting = ", lblGreeting › Text, "<br>")); // Текст
}
На рис. 10.10 показано, что отображает браузер после первого запроса данной страницы. Обратите внимание, что вывод трассировки и трассировочная информация, генерируемая ASP.NET, отображается после формы.

Рис. 10.10. Браузер отображает трассировочную информацию
