Y a-t-il un moyen de rediriger de Page_Load
(ou tout autre événement ASP.NET) lors de l'utilisation de la fonction async
- await
? Bien sûr. Redirect
jette ThreadAbortException
mais même si je l'attrape avec try
- catch
une page d'erreur s'affiche. Si j'appelle Response("url", false)
il ne se plante pas mais je dois arrêter l'exécution de la page (rendu de la page etc.) donc ce n'est pas la solution. Et comme je l'ai remarqué, ces deux méthodes agissent différemment :
Cela aboutit à une ThreadAbortException (je suppose que la tâche se termine de manière synchrone) :
protected async void Page_Load()
{
await Task.Run(() => { });
Response.Redirect("http://www.google.com/");
}
Celui-ci continue après Response.Redirect :
protected async void Page_Load()
{
await Task.Delay(1000);
Response.Redirect("http://www.google.com/");
}
Je dois attendre la réponse mais j'étais en train d'expérimenter et même si j'enlève le await
(pour que la tâche s'exécute en arrière-plan et que la méthode continue), le résultat est le même. La seule chose qui aide est de supprimer le mot-clé async
mot-clé - je pensais async
Permet SEULEMENT await
et rien de plus !