Ошибка IIS / ASP.net для трассировки неудачного запроса: «трассировка неудачного запроса для этого содержимого уже существует» - PullRequest
4 голосов
/ 18 декабря 2010

Я пытаюсь добавить отслеживание невыполненных запросов на свой сервер IIS 7 / ASP.NET.

Сначала я создаю отслеживание сбойных запросов для "all content, error codes 400-999", поскольку хочу сохранить все ошибки.

Затем я пытаюсь создать трассировку для "all content, time: 5 seconds", потому что хочу отслеживать все "длинные" запросы.Однако IIS 7 выдает мне сообщение error : «Трассировка неудавшегося запроса для этого контента уже существует».

Как добавить эту вторую трассировку для всего контента, который занимает> 5 секунд?

alt text

1 Ответ

2 голосов
/ 18 декабря 2010

В вашей web.config конфигурации отслеживания невыполненных запросов выглядит примерно так:

<tracing>
  <traceFailedRequests>
    <add path="*">
      <traceAreas>
        <add provider="ASP" verbosity="Verbose" />
        <add provider="ASPNET" areas="Infrastructure, etc" verbosity="Verbose" />
        <add provider="ISAPI Extension" verbosity="Verbose" />
        <add provider="WWW Server" areas="Authentication, etc" verbosity="Verbose" />
      </traceAreas>
      <failureDefinitions statusCodes="400-999" />
    </add>
  </traceFailedRequests>
</tracing>

Атрибут path определяет тип содержимого, т.е. параметры на первой странице мастера добавления FRT (*,* .aspx, * .asp, Custom).

Если вы изучите схему для раздела system.webServer/tracing/traceFailedRequests в applicationHost.config (расположенном в %systemroot%\System32\inetsrv\ config\schema\IIS_schema.xml, вы обнаружите следующие ограничения:

Путь сбоя запроса должен быть уникальным:

<attribute name="path" type="string" isUniqueKey ="true" />

Внутри пути каждый поставщик (ASP, ASPNET, расширение ISAPI и т. Д.) Должен быть уникальным:

<attribute name="provider" type="string" required="true" isUniqueKey="true" />

Если вы добавили еще одинправило трассировки для отслеживания того же содержимого (*), но с указанием timeTaken, тогда вы попытаетесь добавить:

<add path="*">
  <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure, etc" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication, etc" verbosity="Verbose" />
  </traceAreas>
  <failureDefinitions statusCodes="400-999" />
</add>

Это, конечно, противоречит правилам в схеме, которые говорят, что путь должен бытьуникально.

Однако вы можете указать конкретный контент, который вы хотите отследить, когда timeTaken равен> = 5 секундам.

Например:

<add path="*.aspx">
  <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure, etc" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication, etc" verbosity="Verbose" />
  </traceAreas>
  <failureDefinitions timeTaken="00:00:05" statusCodes="400-999" />
</add>
<add path="*.asp">
  <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure, etc" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication, etc" verbosity="Verbose" />
  </traceAreas>
  <failureDefinitions timeTaken="00:00:05" statusCodes="400-999" />
</add>
<add path="*.asmx">
  <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure, etc" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication, etc" verbosity="Verbose" />
  </traceAreas>
  <failureDefinitions timeTaken="00:00:05" statusCodes="400-999" />
</add>

Не так удобно, как возможность использовать подстановочный знак, но это обходной путь.

...