Notre magasin dispose d'un code généralisé de journalisation des erreurs qui, pour les pages Web, inclut la consignation des propriétés de requête. Cet enregistreur d'erreurs est stable depuis des années. Dernièrement, nous avons eu quelques erreurs où l'entrée de formulaire de l'utilisateur n'a pas pu être traitée, puis l'enregistreur a également bombardé en essayant d'examiner les champs de formulaire. Il a réussi à identifier Request.Headers juste avant d'essayer Request.Form. Laissant certaines choses de mise en forme est probablement pas pertinente, elle se résume essentiellement à:ASP.Net: l'itération sur la collection Request.Form génère une exception de référence nulle
try
{
foreach (string key in HttpContext.Current.Request.Form.Keys)
{
if (IsPrivateField(key.ToLower()))
AppendToLog(key + ": " + Regex.Replace(HttpContext.Current.Request.Form[key], @"[a-zA-Z0-9]", "*"));
else
AppendToLog(key + ": " + HttpContext.Current.Request.Form[key]);
}
}
catch (Exception ex)
{
AppendToLog("Error: " + ex.Message.ToString());
}
Comment peut-il y avoir une exception de référence null lors de l'accès Form [touche] où la clé est venue de la collection Form.Keys? Ou alternativement, comment Form.Keys pourrait inclure une valeur nulle, ou être nul lui-même? Si vous me dites que c'est impossible, je peux poster la version la plus complète pour voir si j'ai raté quelque chose qui ajoute de la crédibilité à un déréférencement nul.
Nous avons récemment eu des incidents où les champs de formulaire qui auraient dû être validés sont vides. Peut-être que nous avons une sorte de gremlin généralisé dans notre état de forme.
Quelle est la pile trace de l'exception? Est-ce qu'il donne un numéro de ligne ou des informations sur la source? – Dai