Se si ha un blocco di codice del tipo:
/* CODICE 1 */
....
Try
SmtpMail.Send(oMailMsg)
Response.Redirect("grazie.aspx")
Catch e As Exception
Response.Redirect("errore.aspx")
End Try
...
verrà sollevata un'eccezione: "Thread Annullato" durante l'esecuzione dell'istruzione Response.Redirect("grazie.aspx"). Allo scattare dell'eccezione, verrà eseguito anche il blocco "Catch", provocando quindi l'esecuzione dell'istruzione Response.Redirect("errore.aspx"). Nonostante l'istruzione di invio dell'e-mail abbia svolto correttamente il suo compito, la pagina esibita dopo l'invio sarà quella recante un avviso d'errore. Questo comportamento avviene per design, poichè avviene una chiamata interna a Response.End
Per ovviare a questo comportamento bisogna utilizzare l'overload del metodo Redirect() come nel seguente esempio
Se si ha un blocco di codice del tipo:
/* CODICE 2 */
....
Try
SmtpMail.Send(oMailMsg)
Response.Redirect("grazie.aspx", False)
Catch e As Exception
Response.Redirect("errore.aspx", False)
End Try
...
Impostando a False il secondo parametro del metodo Redirect() la pagina terminerà l'esecuzione immediatamente e si aggirerà questo fastidioso inconveniente.
Per ulteriori approfondimenti consultare il Microsoft Knowledge Base:
PRB312629: http://support.microsoft.com/default.aspx?scid=kb;EN-US;312629
e
Q307903: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q307903