我正在尝试将失败的请求跟踪添加到我的IIS 7 / ASP.NET服务器。
首先,我为“all content, error codes 400-999
”创建失败的请求跟踪,因为要保存所有错误。
然后,我尝试为“all content, time: 5 seconds
”创建一个跟踪,因为我想跟踪所有“长”请求。但是,IIS 7给出了错误:“此内容的失败请求跟踪已存在”。
如何为所有带有>的内容添加此第二条跟踪5秒钟?
答案 0 :(得分:2)
在您的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
定义内容类型,即Add 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
为&gt; = = 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>
不像只能做一个通配符那么方便,但它是一种解决方法。