Поделиться через


Устранение неполадок неудачных запросов с помощью трассировки в IIS

Применимо к: Службы Internet Information Services 8.5 и более поздние версии

Введение

Трассировка на основе запросов доступна как на автономных серверах, на которые выполняются службы IIS, так и в службе приложений Azure. Если вы можете воспроизвести проблему, с которой вы сталкиваетесь, трассировка, основанная на запросах, предоставляет метод для диагностики проблемы и определения причин её возникновения. Такие проблемы, как низкая производительность при некоторых запросах, сбои проверки подлинности в других запросах или ошибки сервера "500" в ASP или ASP.NET, часто бывает сложно расследовать. Вы можете упростить задание, захватив трассировку проблемы при ее возникновении. В этой статье описывается трассировка неудачных запросов на сервере IIS.

Трассировка неудачных запросов предназначена для буферизации событий трассировки запроса и сохранения их на диск только если запрос заканчивается неудачей. Вы предоставляете определение сбоя. Трассировку неудачных запросов можно использовать по следующим причинам:

  • Вы хотите знать, почему запросы возвращают определенный код состояния HTTP (например, "401" или "404").
  • Запрос занимает много времени для обработки или не отвечает.

В статье описывается выполнение следующих задач:

  • Включите модуль трассировки неудачных запросов.
  • Настройте семантику файла журнала трассировки неудачных запросов.
  • Укажите URL-адрес для обработки трассировки неудачных запросов, включая определения сбоев и области для трассировки.
  • Создайте условие сбоя и просмотрите полученную трассировку.

Предварительные требования

Установка функции трассировки для IIS

Установите следующие функции IIS:

  • ASP.NET 3.5
    • Веб-сервер (IIS)>Веб-сервер>Функции разработки приложений>ASP.NET 3.5
  • ASP.NET 4.5
    • Веб-сервер (IIS)>Веб-сервер>Функции разработки приложений>ASP.NET 4.5
  • Трассировка
    • Веб-сервер (IIS)>Веб-сервер>Состояние и диагностика — трассировка

Вход от имени администратора

Убедитесь, что учетная запись, используемая для входа, является учетной записью администратора или находится в группе администраторов.

Примечание.

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

Создание резервной копии

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

  1. Нажмите клавишу с логотипом Windows + X, выберите Терминал (Администратор), если появится диалоговое окно "Контроль учетных записей пользователей (UAC)", выберите Да.

    Значок администратора терминала в меню

  2. В командной строке выполните следующую команду:

    %windir%\system32\inetsrv\appcmd add backup cleanInstall
    

    Эта команда создает папку cleanInstall , содержащую файлы конфигурации резервного копирования в %windir%\system32\inetsrv\backup.

Создание примера содержимого

  1. Перейдите к%systemdrive%\inetpub\wwwroot.

  2. Переместите содержимое в безопасное расположение (если вы хотите восстановить существующее содержимое) или удалите его.

  3. Создайте пустой файл и назовите его test.asp.

  4. В командной строке перейдите к файлу test.asp в \inetpub\wwwroot.

  5. В файл test.asp вставьте следующее содержимое:

    <h2>Failed Request Tracing Lab</h2><br>
    <br>Today's date is <% response.write(Date()) %>
    

Отключение ASP

Чтобы выполнить эту задачу, необходимо отключить ASP. Выполните следующие действия:

  1. Откройте диспетчер IIS и выберите сервер.

  2. Дважды щелкните ISAPI и CGI Ограничения.

    В области диспетчера IIS выбраны ограничения ISAPI и CGI.

  3. В области ограничений ISAPI и CGI выберите "Активные серверные страницы". В области "Действия" выберите "Запретить", чтобы отключить ASP. Страницы активных серверов отображаются как недопустимые.

    Область ограничений ISAPI и CGI с выбранными страницами активных серверов. Параметр

Включите трассировку невыполненных запросов.

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

Шаг 1. Включение трассировки неудачных запросов для сайта и настройка каталога файлов журнала

  1. Откройте окно командной строки администратора и перейдите к%systemdrive%\windows\system32\inetsrv.

  2. Запустите inetmgr , чтобы открыть диспетчер IIS.

  3. В области "Подключения" разверните имя компьютера, разверните узел "Сайты" и выберите "Веб-сайт по умолчанию".

  4. В области "Действия " перейдите к разделу "Настройка", а затем выберите "Трассировка неудачных запросов"....

    Снимок экрана: панель действий с параметром трассировки неудачных запросов выделена на вкладке

  5. В диалоговом окне «Редактирование параметров трассировки неудачных запросов веб-сайта» настройте следующие параметры:

    • Установите флажок "Включить".
    • Сохраните значения по умолчанию для других параметров.

    Диалоговое окно

  6. Нажмите кнопку ОК.

    Журнал трассировки неудачных запросов теперь включен для выбора веб-сайта по умолчанию. Проверьте файл%windir%\system32\inetsrv\config\applicationHost.config , чтобы убедиться, что конфигурация похожа на следующий пример:

    <system.applicationHost>
       <!-- other system configuration --> 
       <sites> 
          <site name="Default Web Site" id="1"> 
             <!-- other site configuration --> 
             <traceFailedRequestsLogging  enabled="true" /> 
          </site> 
          <!-- site & app defaults --> 
          <!-- other sites configuration --> 
       </sites> 
       <!-- other system configuration --> 
    </system.applicationHost>
    

Шаг 2. Настройка определений сбоев

На этом шаге вы настроите определения сбоев для вашего URL-адреса, включая разделы для трассировки. Вы устраняете неполадки с кодом состояния "404.2", возвращаемого IIS для любых запросов к расширениям, которые не были включено. Этот шаг помогает определить, какие расширения необходимо включить:

  1. Откройте окно командной строки администратора и перейдите к%systemdrive%\windows\system32\inetsrv.

  2. Запустите inetmgr , чтобы открыть диспетчер IIS.

  3. В области "Подключения" разверните имя компьютера, разверните узел "Сайты" и выберите "Веб-сайт по умолчанию".

  4. Дважды щелкните Правила трассировки сбоев запросов.

    На панели

  5. В области Действия выберите Добавить.

  6. В мастере добавления правила трассировки неудачных запросов на странице «Указание содержимого для трассировки» выберите «Все содержимое (*)», а затем нажмите «Далее».

    Мастер добавления правила трассировки неудачных запросов. На странице

  7. На странице "Определение условий трассировки " установите флажок "Код состояния" , а затем введите 404.2 в качестве кода состояния для трассировки.

    Правило трассировки неудачных запросов с указанием страницы

  8. Выберите Далее.

  9. На странице "Выбор поставщиков трассировки" в разделе "Поставщики" установите флажок "WWW-сервер" и снимите все остальные флажки. В разделе "Области" установите флажок "Безопасность " и снимите все остальные флажки.

    Проблема, которая возникает, приводит к возникновению события трассировки ошибок безопасности. Как правило, вы можете диагностировать проблемы аутентификации и авторизации (включая проблемы со списком ограничений ISAPI), используя конфигурацию области безопасности для трассировки в WWW Server. Однако, так как таблица стилей FREB.xsl помогает выделить ошибки и предупреждения, можно по-прежнему использовать конфигурацию по умолчанию для регистрации всех событий во всех областях и поставщиках.

  10. В разделе "Подробность" выберите "Подробный".

    Примечание.

    По умолчанию при установке ролевой службы трассировки, IIS устанавливает поставщиков трассировки для расширений WWW Server, ASP и ISAPI. Если вы устанавливаете ASP.NET версии 2.0 или более поздней, IIS автоматически добавляет поставщика трассировки ASPNET. Дополнительные поставщики устанавливаются пакетом установщика маршрутизации запросов приложений (ARR), который также устанавливает модуль перезаписи URL-адресов, управление веб-фермой и внешний кэш. Вы можете добавить дополнительные поставщики трассировки с помощью <add> элемента в элементе <traceProviderDefinitions> .

    Мастер добавления правила трассировки неудачных запросов, показывающий WWW-сервер, выбранный в списке поставщиков и безопасности, выбранный в меню

  11. Нажмите Готово.

Вы увидите следующее определение для веб-сайта по умолчанию.

Страница

Диспетчер IIS записывает конфигурацию в %systemdrive%\inetpub\wwwroot\web.config файл с помощью тега <location> . Конфигурация должна выглядеть следующим образом:

<configuration> 
    <system.webServer> 
        <tracing> 
            <traceFailedRequests> 
                <add path="*"> 
                    <traceAreas> 
                        <add provider="WWW Server" areas="Security" verbosity="Verbose" /> 
                    </traceAreas> 
                    <failureDefinitions statusCodes="404.2" /> 
                </add> 
            </traceFailedRequests> 
        </tracing> 
    </system.webServer> 
</configuration>

Тестирование и просмотр файла журнала ошибочных запросов

В этом разделе показано, как создать неудачный запрос и просмотреть результирующий журнал трассировки. Вы уже настроили IIS для записи журналов трассировки для HTTP http://localhost/*.asp запросов, которые не выполняются успешно и возвращают код ответа HTTP 404.2. Требуется убедиться, что конфигурация работает.

Шаг 1. Создайте ошибку и файл журнала запросов на отказ

  1. Откройте новое окно Internet Explorer.

  2. Введите http://localhost/test.asp, и нажмите ВВОД. Отображается сообщение об ошибке HTTP 404.2 — не найдено.

    Окно Internet Explorer, отображающее страницу сообщения об ошибке H T T P 404, 2 — не найдена.

Шаг 2. Просмотр файла журнала запроса на сбой

  1. После создания неудачного запроса откройте проводник и перейдите к%systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1.

    Папка W 3 S V C 1 в папке

    Примечание.

    Когда IIS записывает файл журнала ошибочных запросов, он создает отдельный файл для каждого ошибочного запроса. Он также записывает одну таблицу стилей freb.xsl на каталог. Эта таблица стилей помогает просматривать полученные файлы журнала запросов на сбои (например, fr000001.xml в этом примере).

  2. Щелкните правой кнопкой мыши файл журнала для ошибки "404.2", а затем выберите "Открыть с помощью>Internet Explorer". Если вы впервые открываете файл трассировки неудачных запросов, необходимо добавить about:internet в список надежных сайтов. Этот шаг необходим, так как конфигурация расширенной безопасности Internet Explorer включена по умолчанию. В этой ситуации появится диалоговое окно, содержащее запрос "Продолжить", когда содержимое веб-сайта заблокировано .

    В диалоговом окне Internet Explorer отображается запрос

  3. В диалоговом окне Internet Explorer добавьте about:internet в список доверенных сайтов. Выполните следующие действия:

    1. Выберите меню "Сервис" , а затем выберите "Параметры браузера".
    2. Выберите вкладку Безопасность.
    3. Выберите "Надежная зона", а затем выберите "Сайты". Этот шаг обеспечивает работу XSL.
  4. После добавления about:internet в список доверенных сайтов вы увидите страницу сводки запросов.

    Страница

    Сводка неудачного запроса регистрируется вверху. Таблица Ошибок и Предупреждений определяет все события, помеченные по степени серьезности WARNING, ERROR или CRITICAL ERROR. В этом примере уровень критичности WARNING присваивается из-за ограничения ISAPI. Файл, который вы пытались загрузить, — это %windir%\system32\inetsrv\asp.dll.

  5. Откройте необработанный XML-файл непосредственно с помощью текстового редактора и просмотрите содержимое события.

Итоги

Вы выполнили две задачи:

  • Настройка трассировки неудачных запросов для захвата данных по любому запросу, который возвращает IIS и имеет код состояния 404.2.
  • Проверка того, что IIS захватил трассировку для запроса

Вы также проверили, что файл журнала freb.xml не содержит запросов, отличных от тех запросов, которые показывают код возврата 404.2. При обращении к файлу журнала сбоев вы определили, что причина сбоя заключалась в том, что расширение отключено для этого запроса. Вы можете попробовать другие страницы, отличные от HTML (например, файлы .gif или .jpg), и убедиться в том, что файл журнала не добавляет эти записи. Вы также можете легко изменить это событие на событие "404". Если запрос занимает более 30 секунд, можно записать ошибку, задав поле timeTaken в качестве значения failureDefinitions .

Восстановление резервной копии

После выполнения задач в этой статье восстановите резервную копию конфигурации. Выполните следующую команду, получив права администратора:

%windir%\system32\inetsrv\appcmd restore backup cleanInstall