Merke: Führe niemals ein Response.End(); in einem Try/Catch-Block aus. Ebensowenig sollte man darauf verzichten ein "normales" Response.Redirect()-Statement da zu platzieren, ohne mit dem zweiten Parameter festzulegen, dass Response.End(); nicht aufgerufen werden soll.
Falsch:
try
{
Response.Redirect("Error.aspx");
}
catch
{
// Do Something
}
Richtig:
try
{
Response.Redirect("Error.aspx", false);
}
catch
{
// Do Something
}
Der Grund:
Die End()-Methode des Response-Objektes, die auch bei einem Redirect per default aufgerufen wird, ruft intern wiederum Thread.Abort auf, was im Ablauf von Try/Catch eine neue Exception auslöst.
Sehr böse und heimtückisch, ich habe gerade eine Stunde danach gesucht.