Jusqu'à présent, j'ai essayé ce qui suit - 1) Ajouté un attribut personnalisé pour gérer le timeout.
public class TimeOutFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
System.Web.HttpContext.Current.GetType().GetField("_timeoutState", System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic).SetValue(System.Web.HttpContext.Current, 1);
base.OnActionExecuting(filterContext);
}
}
Ajouté ce qui suit dans Global.asax
filters.Add(new TimeOutFilter());
Utilisé l'attribut [TimeOutFilter] pour décorer le contrôleur
2) Ajouté l'attribut AsyncTimeout pour décorer le contrôleur/l'action de la manière suivante :
[AsyncTimeout(10)]
3) Défini executionTimeout sur une valeur dans le fichier web.config.
4) Défini HttpContext.Server.ScriptTimeout sur une valeur dans le contrôleur.
HttpContext.Server.ScriptTimeout = 10;
En utilisant les étapes du point 1, j'ai pu rediriger l'utilisateur vers l'écran de connexion en cas de timeout de la requête. Mais ce n'est pas ce que je recherche.
Je cherche à obtenir ou déclencher une exception lorsque le timeout de la requête se produit.
Est-ce que quelqu'un pourrait me dire s'il existe un moyen de faire cela?