IIS/ASP.net错误的失败请求跟踪:"此内容的失败请求跟踪已存在"

4

我正在尝试为我的IIS 7/ASP.NET服务器添加故障请求跟踪。

首先,我创建了“所有内容,错误代码400-999”的失败请求跟踪,因为想保存所有错误。

然后,我尝试创建“所有内容,时间:5秒”的跟踪,因为我想跟踪所有“长时间”的请求。然而,IIS 7给了我一个错误:“此内容的失败请求跟踪已存在”。

我该如何添加第二个跟踪,以便跟踪所有需要>5秒的内容?

alt text

1个回答

3
在您的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、自定义)。

如果您检查位于applicationHost.config中的system.webServer/tracing/traceFailedRequests部分的模式(位于% 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>

虽然不如通配符方便,但这是一个解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接