Трассировка
Технология 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. Браузер отображает трассировочную информацию