Общие сведения о трассировке ASP.NET

Обновлен: Ноябрь 2007

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

В этом разделе рассматриваются следующие темы:

  • Функциональные возможности

  • Базовые сведения

  • Примеры кода

  • Связанные классы

Функциональные возможности

Трассировка ASP.NET предоставляет следующие возможности:

  • Отладочные инструкции. Допускается вставлять в код отладочные инструкции без необходимости их удаления из приложения при развертывании на рабочем сервере. Также на странице можно описать переменные или структуры и отслеживать ход выполнения страницы или приложения.

  • Функции интегрированной трассировки. Можно направить сообщения класса System.Diagnostics.Trace в выходной поток трассировки ASP.NET, а сообщения трассировки ASP.NET — в System.Diagnostics.Trace. Также можно пересылать инструментированные события ASP.NET в System.Diagnostics.Trace. Дополнительные сведения см. в разделе Пошаговое руководство. Интеграция методов трассировки ASP.NET и System.Diagnostics.

  • Программный доступ к сообщениям трассировки. Доступ к сообщениям трассировки из кода позволяет контролировать формат сообщений трассировки и выполнять их дополнительную обработку.

  • Трассировка на уровне приложения. Возможность трассировки на уровне приложения позволяет просматривать последние данные трассировки, доступные без перезапуска сеанса трассировки и увеличения объема данных трассировки, хранимых на сервере. Отображаются последние по времени данные трассировки, устаревшие данные отклоняются.

К началу

Базовые сведения

Трассировка добавляет диагностические сведения и пользовательские сообщения трассировки в выходной поток страницы и посылает эти данные запрашивающему обозревателю. Кроме того, для просмотра этих сведений можно использовать специальное средство просмотра трассировки (Trace.axd), отображающее сведения трассировки для каждой страницы приложения ASP.NET. Сведения трассировки могут помочь исследовать ошибки или нежелательные результаты, полученные во время обработки запросов к странице ASP.NET.

Можно настроить отдельные страницы для отображения данных трассировки. Альтернативный способ — настроить файл приложения Web.config таким образом, чтобы сведения трассировки отображали все страницы, если только данная страница явно не отключает трассировку. Настройка трассировки на уровне приложения удобна, поскольку не нужно изменять отдельные страницы для включения и отключения трассировки.

Операторы трассировки обрабатываются и отображаются, только когда трассировка включена. По выбору пользователя сведения трассировки отображаются либо на странице, либо в средстве просмотра трассировки, либо в них обоих. Сведения о том, как включить трассировку для страницы, см. в разделе Практическое руководство. Включение трассировки для страницы ASP.NET. Сведения о включении трассировки для приложения см. в разделе Практическое руководство. Включение трассировки для приложений ASP.NET.

Трассировка на уровне приложения ASP.NET

Включить трассировку на уровне приложения можно с помощью элемента trace в файле Web.config. При включении трассировки на уровне приложения ASP.NET собирает данные по каждому запросу к приложению (количество запросов не может превышать заданное максимальное значение). По умолчанию максимальное число запросов равно 10. По его достижению сведения о новых запросах не сохраняются приложением. Можно настроить трассировку для хранения самых старых сведений трассировки (отменяющих новые данные) или самых последних сведений трассировки (отменяющих старые данные).

Bb386420.alert_note(ru-ru,VS.90).gifПримечание.

Когда трассировка разрешена для всего приложения в файле Web.config, сведения трассировки собираются и обрабатываются по каждой странице приложения. Чтобы переопределить параметры на уровне приложения, присвойте атрибуту Trace директивы @ Page значение false. Любой оператор Write или Warn, включенный в код страницы, предназначен только для вывода сообщений в журнал трассировки для средства просмотра трассировки.

Просмотр информации трассировки

Можно просмотреть сведения о трассировке в нижней части отдельных страниц. Другой способ — использовать средство просмотра трассировки (Trace.axd) для просмотра сведений, которые собирает и кэширует ASP.NET при включенной трассировке. Подробные сведения о выходных данных трассировки см. ниже в подразделе Чтение информации трассировки ASP.NET.

Если требуется отображать сведения трассировки в конце страницы, с которой они связаны, присвойте атрибуту trace элемента PageOutput значение true. Если разрешить трассировку на уровне приложения, но вывод сведений трассировки для некоторых страниц не требуется, присвойте атрибуту Trace в директивах @ Page этих страниц значение false. Дополнительные сведения о настройке приложений ASP.NET см. в разделе Общие сведения о конфигурационном ASP.NET.

По умолчанию просмотр сведений трассировки на уровне приложения доступен только на локальном компьютере веб-сервера. Чтобы сделать данные трассировки на уровне приложения видимыми с удаленных компьютеров, присвойте атрибуту trace элемента LocalOnly значение false.

Bb386420.alert_note(ru-ru,VS.90).gifПримечание.

В целях безопасности используйте удаленный доступ к данным трассировки только при разработке или развертывании приложения. Отключите эту функцию перед передачей приложения на рабочие веб-узлы. Для этого в файле Web.config установите значение атрибута LocalOnly равным true.

В следующем примере показана настройка трассировки приложения для получения до 40 запросов. Здесь также разрешается в обозревателях на компьютерах, отличных от сервера, использовать средство просмотра трассировки.

<configuration>
  <system.web>
    <trace enabled="true" requestLimit="40" localOnly="false" />
  </system.web>
</configuration>

Написание пользовательских сообщений трассировки ASP.NET

Можно добавить пользовательские сведения трассировки для отображения на странице ASP.NET или в журнале трассировки. Сведения трассировки, записанные в журнал трассировки, отображаются с помощью средства просмотра трассировки. Дополнительные сведения см. в разделе Практическое руководство. Просмотр сведений о трассировке ASP.NET c помощью средства просмотра трассировки.

Можно записывать сведения трассировки с помощью методов Warn или Write класса TraceContext. Различие между этими методами состоит в том, что сообщения, записанные с помощью метода Warn, выделяются красным цветом.

В следующем примере показано использование класса TraceContext для отображения информации трассировки в конце страницы ASP.NET. Для каждого из элементов управления LinkButton, инициировавшего обратную передачу, создаются разные исключения. В журнал трассировки записывается то сообщение об ошибке, которое использовалось для инициализации экземпляра ArgumentException или InvalidOperationException.

<%@ Page Language="VB" Trace="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Try
      If (IsPostBack) Then

        Select Case Request.Form("__EVENTTARGET")
          Case "WarnLink"
            Throw New ArgumentException("Trace warn.")
          Case "WriteLink"
            Throw New InvalidOperationException("Trace write.")
          Case Else
            Throw New ArgumentException("General exception.")
        End Select  
      End If
    Catch ae As ArgumentException
      Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)
    Catch ioe As InvalidOperationException
      Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)
    End Try
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:LinkButton id="WriteLink" 
                      runat="server"
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      runat="server"
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" Trace="true"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    try {
      if (IsPostBack)
      {

        switch (Request.Form["__EVENTTARGET"])
        {
          case "WarnLink":
            throw new ArgumentException("Trace warn.");
            break;
          case "WriteLink":
            throw new InvalidOperationException("Trace write.");
            break;
          default:
            throw new ArgumentException("General exception.");
            break;          
        }
      }
    }
    catch (ArgumentException ae) {    
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
    catch (InvalidOperationException ioe) {    
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:LinkButton id="WriteLink" 
                      runat="server"
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      runat="server"
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>

Чтение информации трассировки ASP.NET

Данные трассировки можно просмотреть либо в конце страницы ASP.NET, либо воспользовавшись средством просмотра трассировки. В обоих случаях отображается одна и та же информация. ASP.NET организует данные трассировки в виде последовательности таблиц. Сведения о просмотре информации трассировки на странице см. в разделе Практическое руководство. Включение трассировки для страницы ASP.NET. Сведения о просмотре информации трассировки с помощью средства просмотра см. в разделе Практическое руководство. Просмотр сведений о трассировке ASP.NET c помощью средства просмотра трассировки.

Данные трассировки отображаются в следующем порядке.

Сведения о запросе

Раздел Сведения о запросе отображает общую информацию о текущем запросе и ответе.

Значение

Описание

Код сеанса

Идентификатор сеанса указанного запроса.

Время запроса

Время создания запроса.

Кодировка запроса

Кодировка символов в запросе.

Тип запроса

Метод HTTP (GET или POST).

Код состояния

Код состояния, связанный с запросом. Дополнительные сведения см. в документе RFC 2616 на веб-узле World Wide Web Consortium (W3C).

Кодировка ответа

Кодировка символов ответа.

Данные трассировки

Раздел Данные трассировки отображает потоки событий на уровне страницы. Если были созданы пользовательские сообщения трассировки, они также отображаются в разделе Данные трассировки.

Значение

Описание

Категория

Категория пользовательской трассировки, если она указана при вызове метода Warn или Write.

Сообщение

Пользовательское сообщение трассировки, если оно указано в методе Warn или Write.

От первого (с)

Время в секундах с момента обработки первого сообщения трассировки. Первое сообщение трассировки отображается в верхней части списка.

От последнего (с)

Время в секундах между обработкой текущего и предыдущего сообщений трассировки.

Дерево элементов управления

Раздел Дерево элементов управления отображает сведения о серверных элементах управления, которые создаются на странице ASP.NET.

Значение

Описание

Идентификатор элемента управления

Идентификатор элемента управления. Если свойство ID элемента управления не установлено, то ASP.NET генерирует значение ID с помощью свойства UniqueID.

Тип

Полное имя элемента управления.

Размер кода отрисовки в байтах

Размер кода отрисовки элемента управления в байтах (с учетом дочерних элементов управления). Это реальный размер текста в HTML, XML или другом формате, посылаемый обозревателю.

Размер ViewState в байтах

Размер памяти в байтах, используемый элементом управления в состоянии просмотра (без учета дочерних элементов управления). Дополнительные сведения см. в разделе Общие сведения об управлении состоянием ASP.NET.

Размер ControlState в байтах

Размер памяти в байтах состояния элемента управления (без учета дочерних элементов управления). Дополнительные сведения см. в разделе Общие сведения об управлении состоянием ASP.NET.

Состояние сеанса

Раздел Состояние сеанса отображает сведения о значениях, хранящихся в состоянии сеанса, если таковые имеются. Дополнительные сведения см. в разделе Общие сведения о состоянии сеанса ASP.NET.

Значение

Описание

Ключ сеанса

Ключ для данных, хранящихся в состоянии сеанса, если таковые имеются.

Тип

Полное имя типа объекта, который хранит данные.

Значение

Строковое представление данных, хранящихся в состоянии сеанса, если таковые имеются.

Состояние приложения

Раздел Состояние приложения отображает сведения о значениях, хранящихся в состоянии приложения, если таковые имеются. Дополнительные сведения см. в разделе Общие сведения о состоянии приложения ASP.NET.

Значение

Описание

Ключ приложения

Ключ для данных, хранящихся в состоянии приложения, если таковые имеются.

Тип

Полное имя типа объекта, который хранит данные.

Значение

Строковое представление данных, которые хранятся в состоянии приложения, если таковые имеются.

Разделы Сookie запроса и Сookie ответа отображают сведения о cookie, которые передаются между обозревателем и сервером при каждом запросе и ответе. Раздел отображает и постоянные, и сеансовые cookie. ASP.NET создает некоторые файлы cookie автоматически, например для состояния сеанса, основанного на cookie, и для проверки подлинности с помощью форм. Дополнительные сведения см. в разделе Общие сведения о файлах Cookie ASP.NET.

Значение

Описание

Имя

Имя cookie.

Значение

Значение cookie, либо, если cookie состоит из нескольких значений — подразделы и значения.

Размер

Размер cookie в байтах.

Коллекция заголовков

Раздел Коллекция заголовков отображает сведения о парах имя/значение для заголовков сообщений запросов и ответов. Заголовки сообщений предоставляют сведения об основной части сообщения или запрошенном ресурсе. Данные в заголовке используется для контроля за тем, как обрабатываются сообщения запросов и как создаются ответные сообщения. Дополнительные сведения о заголовках HTTP см. в документе RFC 2616 на веб-узле World Wide Web Consortium (W3C).

Значение

Описание

Имя

Имя заголовка.

Значение

Значение заголовка.

Коллекция форм

Раздел Коллекция форм отображает пары имя/значение, показывающие значения элементов форм (значения элементов управления), отправленные в запросе POST (обратная передача).

Значение

Описание

Имя

Имя переменной формы.

Значение

Значение переменной формы.

Коллекция строк запросов

Раздел Коллекция строк запросов показывает значения, которые передаются в URL-адресе. В URL-адресе строки запроса отделены от основной части адреса знаком вопроса (?); несколько элементов строки запроса разделяются амперсандом (&). Пары имя/значение в строках запроса разделяются знаком равенства (=). Свойство QueryString объекта HttpRequest возвращает коллекцию NameValueCollection из переменных строк запроса.

Значение

Описание

Имя

Имя переменной строки запроса.

Значение

Значение переменной строки запроса.

Переменные сервера

Раздел Переменные сервера отображает коллекцию переменных среды сервера и данные заголовка запроса. Свойство ServerVariables объекта HttpRequest возвращает коллекцию NameValueCollection переменных сервера.

Значение

Описание

Имя

Имя переменной сервера.

Значение

Значение переменной сервера.

К началу

Трассировка ASP.NET и диагностическая трассировка

Сообщения трассировки ASP.NET либо отображаются на веб-страницах ASP.NET, либо выводятся в средство просмотра трассировки ASP.NET (Trace.axd). В то же время класс System.Diagnostics.Trace используется для записи сообщений в стандартный поток вывода трассировки .NET Framework (как правило, в окно консоли). Чтобы упростить отслеживание взаимодействия веб-страниц ASP.NET с бизнес-объектами и другими компонентами, можно интегрировать трассировку ASP.NET с трассировкой System.Diagnostics. Затем можно направить все сообщения трассировки в один из этих выходных потоков.

Наиболее часто трассировка ASP.NET используется совместно с классом System.Diagnostics.Trace, когда объекты среднего уровня бизнес-логики на веб-странице взаимодействуют с данными и бизнес-правилами. Можно также применять трассировку System.Diagnostics.Trace для страниц, использующих службы уровня предприятия, такие как транзакции и очереди. В этих случаях компоненты бизнес-уровня и уровня предприятия играют ключевую роль в работе страницы. Кроме того, использование единого выходного потока трассировки может помочь в мониторинге и анализе работы многоуровневого приложения. Дополнительные сведения см. в разделе Практическое руководство. Включение трассировки для приложений ASP.NET.

Настройка атрибутов трассировки

В следующей таблице показаны атрибуты элемента trace в файле Web.config, которые можно использовать для изменения поведения трассировки на уровне приложения.

Атрибут

Описание

Enabled

true — чтобы включить трассировку для приложений; в противном случае — false. Значение по умолчанию — false. Можно переопределить этот параметр для отдельных страниц, установив атрибут Trace в директиве @ Page страницы в значение true или false.

PageOutput

true — для вывода трассировки и на страницы, и в средство просмотра трассировки (Trace.axd); в противном случае — false. Значение по умолчанию — false.

Bb386420.alert_note(ru-ru,VS.90).gifПримечание.
Этот параметр не влияет на страницы с включенной трассировкой.

RequestLimit

Максимальное число хранящихся на сервере трассируемых запросов. По умолчанию используется значение 10.

TraceMode

Порядок вывода данных трассировки. Для сортировки в порядке обработки информации присвойте этому атрибуту значение SortByTime. Для сортировки в алфавитном порядке по пользовательским категориям присвойте этому атрибуту значение SortByCategory. По умолчанию используется значение SortByTime.

LocalOnly

true — чтобы средство просмотра трассировки (Trace.axd) было доступно только на сервере; в противном случае — false. Значение по умолчанию — true.

MostRecent

true — для вывода в поток трассировки последних по времени данных, иначе false. Если указано false, то при превышении значения requestLimit новые запросы не сохраняются. Значение по умолчанию — false.

Bb386420.alert_note(ru-ru,VS.90).gifПримечание.
Трассировка запросов, превышающих определенный атрибутом requestLimit предел, выполняется в режиме сохранения последних по времени запросов только в том случае, если атрибут mostRecent имеет значение true.

Примеры кода

Практические и пошаговые руководства

Практическое руководство. Включение трассировки для страницы ASP.NET

Практическое руководство. Включение трассировки для приложений ASP.NET

Практическое руководство. Просмотр сведений о трассировке ASP.NET c помощью средства просмотра трассировки

Пошаговое руководство. Интеграция методов трассировки ASP.NET и System.Diagnostics

К началу

Связанные классы

Класс

Описание

System.Diagnostics.Trace

Основной класс для реализации трассировки.

TraceContext

Фиксирует и представляет подробности выполнения веб-запроса.

К началу

См. также

Основные понятия

Производительность, устранение неполадок и отладка

Ссылки

К началу