Использование IntelliTrace в Веб запросах.

Данная статья является переводом публикации Ian Huff “IntelliTrace Web Requests”.

Команда разработчиков Visual Studio обязалась выпускать обновления Visual Studio в более интенсивном режиме, чем новые версии и сервисные обновления. Как часть нашего участия в этом обязательстве, мы использовали период бета тестирования Visual Studio 11 для добавления новых возможностей IntelliTrace, которые не были готовы к моменту выхода беты. Установив обновление к Visual Studio 11 Beta, которое будет доступно через службу обновлений на этой неделе, вы получите новые функции IntelliTrace для диагностирования проблем в рабочих версиях приложений IIS. Данная функциональность поможет получить информацию о запросах, поступающих на сервер, собрать и сохранить данные о каждом запросе и отобразить какие события IntelliTrace коррелируют с выполнением каждого запроса.

Сбор информации о запросах на сервере.

Visual Studio 11 Beta уже содержит средства, позволяющие собирать информацию о Веб запросах при помощи IntelliTrace на рабочем сервере. Однако просматривать ее на не обновленной версии VS11 Beta не возможно: вы можете открыть эти файлы, но элементы управления пользовательского интерфейса будут не доступны. Обновление беты добавляет поддержку запросов к пользовательскому интерфейсу и полностью раскрывает потенциал собранных IntelliTrace файлов.

Эта статья сфокусирована на том, как использовать новые инструменты веб-запросов для анализа данных, поэтому за подробностями о работе IntelliTrace лучше обратиться к нашей статье MSDN. Обратите внимание, что инструменты сбора информации используют новую автономную программу и скрипты PowerShell. Таким образом, эти файлы могут быть быстро и легко собраны при помощи PowerShell и скопированы на сервер (инсталляция не требуется).

Анализ информации веб-запросов.

Открытие файла IntelliTrace с собранной информацией о веб-запросах в Visual Studio 11 Ultimate после установки обновления добавит новую секцию веб-запросов к сводной странице IntelliTrace. Раскрытие этой секции отобразит таблицу, подобную изображенной ниже. Этот пример был собран на Team Foundation Server, который мы используем в качестве хранилища исходных кодов.

Эта таблица содержит все веб-запросы, записанные IntelliTrace на сервере. По каждому запросу, отправленному на сервер, мы собираем некоторую основную информацию: метод, адрес, время поступления запроса, статус, идентификатор сессии, наименование агента (User Agent), время начала и окончания. Большинство названий этих категорий говорят сами за себя, кроме идентификатора сессии. Данный идентификатор не имеет отношения к SessionID в ASP.NET, а просто порядковый номер сессии, который IntelliTrace увеличивает каждый раз, как начинается новая сессия. Таким образом, рассмотрение веб-запросов с одинаковым идентификатором позволит вам получить информацию о конкретной пользовательской сессии, но вы не сможете сравнить это значение с ASP.NET SessionID. По умолчанию веб-запросы отсортированы в порядке их поступления на сервер.

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

В качестве примера, следующий запрос извлечет все веб-запросы, которые возвращают код 304 и содержат текст “App_Themes”:

Status:304 App_Themes

На следующем примере отображаются запросы с идентификатором 2:

Глубокий анализ веб-запроса.

Со сводной страницы вы можете перейти к глубокому анализу запроса при помощи двойного щелчка на списке, либо выбрав запрос и нажав кнопку “Request Details” внизу списка. Откроется новое окно как вкладка предварительного просмотра. Если вы еще не знакомы с ними (это – новый функционал VS11), эти вкладки будут открываться во вкладке самого документа до тех пор, пока вы не разместите их корректно на главном документе. По мере открытия деталей других запросов, они будут закрывать ранее открытые вкладки пока вы не уберете их из вкладки предварительного просмотра.

В настоящее время, когда вы открываете очень большой файл с данными о запросах, отображение может занять некоторое время. Мы работаем над ускорением этого процесса, но пока будьте терпеливы.

В верхней части страницы описания содержится та же основная информация о запросе, что и на главной странице. Затем представлен список событий IntelliTrace, который выглядит аналогично тому, что вы сами получите, проводя отладку с IntelliTrace или отлаживаясь по сохраненному логу IntelliTrace. Этот список отображает все события IntelliTrace, которые были записаны во время выполнения данного запроса на сервере. Они отсортированы в порядке поступления, первое событие находится наверху списка.

На данном примере вы можете видеть массу событий ADO.NET, которые запрашивают данные из базы, а также парочку сгенерированных исключений:

Щелкнув дважды на любом из этих событий вы запустите отладчик и приступите к отладке лога IntelliTrace для данного события. Если вы собрали ваш лог с информацией о вызовах методов, используя collection_plan.ASP.NET.trace.xml либо настроив соответствующим образом план сбора информации, вы сможете по коду, проверить параметры методов и возвращаемые значения. Одно важно помнить, что для просмотра исходных текстов во время отладки требуется настроить в Visual Studio путь к символьным PDB файлам той версии вашего приложения, что выполняется на IIS. Без этих данных получение месторасположения исходников не возможно и во время отладки появится окно “Symbols not found”.

Как все это работает.

После данного краткого ознакомления, я собираюсь подробно рассказать о том, как данный функционал работает внутри IntelliTrace. Продолжение следует.

Ian Huff