Exemples de filtrage des erreurs
Pour en savoir plus sur le filtrage des erreurs inoffensives ou parasites de vos journaux, consultez la section «Filtrage des erreurs».
Filtrer les requêtes pour favicon.ico se terminant par un code d'état 404 :
<errorFilter>
<test>
<and>
<equal binding="HttpStatusCode"
value="404" type="Int32" />
<regex binding="Context.Request.ServerVariables['URL']"
pattern="/favicon\.ico(\z|\?)" />
</and>
</test>
</errorFilter>
Filtrer les requêtes se terminant par 404 ou celles (utilisant une assertion jscript) où la dernière erreur VB générée était un nombre négatif :
<errorFilter>
<test>
<or>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<jscript>
<expression>
<![CDATA[
// @assembly Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// @import Microsoft.VisualBasic
Information.Err().Number < 0
]]>
</expression>
</jscript>
</or>
</test>
</errorFilter>
Filtre toutes les exceptions survenant sur les requêtes locales :
<errorFilter>
<test>
<equal binding="Context.Request.IsLocal"
value="True" type="Boolean" />
</test>
</errorFilter>
Filtrez les exceptions dont le message contient certains mots. Dans l'exemple ci-dessous, les mots doivent être «potentially», «dangerous», «value», «detected» et «client», dans l'ordre indiqué. Cela filtrera une exception dont le message indique «A potentially dangerous Request.Path value was detected from the client».
<errorFilter>
<test>
<regex binding="Exception.Message"
pattern="(?ix: \b potentially \b.+?\b dangerous \b.+?\b value \b.+?\b detected \b.+?\b client \b )" />
</test>
</errorFilter>
Cet exemple a été créé en réponse au fil de discussion «Filtrage HttpException : Une valeur Request.Path potentiellement dangereuse a été détectée...» du groupe de discussion.
Filtre les exceptions de type FileNotFoundException uniquement lorsqu'une image est demandée (le chemin de la requête se termine par .jpg, .gif ou .png). De plus, filtre les exceptions résultant d'erreurs de compilation ou d'analyse lorsque la requête provient d'un hôte local et que le débogage est activé dans l'application (ce qui est typique lors du développement de pages compilées dynamiquement avec du code en ligne).
<errorFilter>
<test>
<jscript>
<expression><![CDATA[
// @assembly mscorlib
// @assembly System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// @import System.IO
// @import System.Web
// 404 pour les images
(($.HttpStatusCode == 404
|| $.BaseException instanceof FileNotFoundException)
$.Context.Request.Path.match(/.(jpg|png|gif)$/i))
// Erreurs de compilation pendant le développement
|| ($.Context.IsDebuggingEnabled
$.Context.Request.IsLocal
($.BaseException instanceof HttpCompileException
|| $.BaseException instanceof HttpParseException))
]]></expression>
</jscript>
</test>
</errorFilter>
Filtrer les exceptions de type TaskCanceledException mais uniquement lorsque la méthode de requête HTTP est HEAD et que la chaîne de l'agent utilisateur contient le texte «Microsoft Office Existence Discovery».
<errorFilter>
<test>
<jscript>
<expression><![CDATA[
// @assembly mscorlib
// @import System.Threading.Tasks
// Requêtes HEAD de Microsoft Excel pouvant entraîner
// TaskCanceledException à lever
($.BaseException instanceof TaskCanceledException
'HEAD' === $.Context.Request.HttpMethod
$.Context.Request.UserAgent.match(/\bMicrosoft\s+Office\s+Existence\s+Discovery\b/i))
]]></expression>
</jscript>
</test>
</errorFilter>
Cette erreur se produit généralement lorsque Microsoft Excel est configuré avec un gestionnaire de requêtes Web vers un gestionnaire de requêtes asynchrones dans votre application.