Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EMPÊCHER LES ERREURS DES USERSCONTROLS DE FAIRE PLANTER TOUTE LA PAGE


Information sur la source

Catégorie :Astuces Source .NET ( DotNet ) Classé sous : usercontrol, exception, erreur, empêcher, page Niveau : Initié Date de création : 26/03/2006 Date de mise à jour : 03/04/2006 22:31:28 Vu / téléchargé: 11 473 / 173

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


Description

Ce code fait la même chose (en mieux :p) que cette source de jesusonline : http://www.aspfr.com/codes/EVITER-ERREURS-USERCONTROLS-ARRETENT-FONCTIONNEMENT-PAGE_36510.aspx, bien que l'approche soit radicalement différente.

Tout tient en fait dans une des méthodes de la classe Page : ProcessRequest(HttpContext context)

J'ai mis dans le Zip un exemple : une page avec 3 UserControls et un bouton pour faire lancer une exception dans un des UserControls.
 

Source

  • // J'ai une liste des UsersControls à charger qui se trouve dans une variable de sessions : Session["Ucs"]
  • // On va utiliser cette liste pour rechercher quel est l'UC qui cause l'erreur
  • // Le contenu de la méthode ProcessRequest(HttpContext context) :
  • public override void ProcessRequest(HttpContext context)
  • {
  • // dans le ProcessRequest, on attrappe toutes les exceptions
  • try
  • {
  • base.ProcessRequest(context);
  • }
  • catch (Exception ex)
  • {
  • // on recheches dans la StackTrace de l'exception quel est l'usercontrol qui apparait
  • string UcToRemove = "";
  • foreach (string item in (System.Collections.Generic.List<string>)Session["Ucs"])
  • {
  • if (ex.InnerException.StackTrace.Contains(item.Replace(".ascx","")))
  • {
  • // si on a trouvé l'UserControl qui cause l'erreur, on note son nom
  • UcToRemove = item;
  • }
  • }
  • if (UcToRemove != "")
  • {
  • // ensuite on l'enlève de la liste des UC à charger
  • // donc, plus aucun bug :D
  • ((System.Collections.Generic.List<string>)Session["Ucs"]).Remove(UcToRemove);
  • // on redirige la page sur elle même pour la recharger entièrement
  • // mais sans l'UC qui ne marche pas :)
  • System.Web.HttpContext.Current.Response.Redirect(System.Web.HttpContext.Current.Request.Url.ToString());
  • }
  • else
  • {
  • throw;
  • }
  • }
// J'ai une liste des UsersControls à charger qui se trouve dans une variable de sessions : Session["Ucs"]
// On va utiliser cette liste pour rechercher quel est l'UC qui cause l'erreur
// Le contenu de la méthode ProcessRequest(HttpContext context) :

public override void ProcessRequest(HttpContext context)
	{
		
		// dans le ProcessRequest, on attrappe toutes les exceptions
		try
		{
			base.ProcessRequest(context);
		}
		catch (Exception ex)
		{
			// on recheches dans la StackTrace de l'exception quel est l'usercontrol qui apparait
			string UcToRemove = "";
			foreach (string  item in (System.Collections.Generic.List<string>)Session["Ucs"])
			{
				if (ex.InnerException.StackTrace.Contains(item.Replace(".ascx","")))
				{
					// si on a trouvé l'UserControl qui cause l'erreur, on note son nom
				UcToRemove = item;
				}
			}
			if (UcToRemove != "")
			{
				// ensuite on l'enlève de la liste des UC à charger
				// donc, plus aucun bug :D
				((System.Collections.Generic.List<string>)Session["Ucs"]).Remove(UcToRemove);

				// on redirige la page sur elle même pour la recharger entièrement
				// mais sans l'UC qui ne marche pas :)
			System.Web.HttpContext.Current.Response.Redirect(System.Web.HttpContext.Current.Request.Url.ToString());
			}
			else
			{
				throw;
			}
	}

Conclusion

Je n'ai pas encore trouvé de moyen de contourner cette méthode, mais il doit sans doute y en avoir...

Si il y en a, n'hésitez pas, les commentaires sont là pour ça :p
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

26 mars 2006 20:19:57 :
orthographe...
27 mars 2006 17:11:11 :
ZIP
29 mars 2006 15:08:23 :
ZIP (bis)
03 avril 2006 22:31:29 :
ZIP !

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Erreur 404 [ par charlix ] Bonjour,Comment faire pour changer la page 404 en fonction du repertoire dans lequel on est.Pour l'application, l'aide est dans uhn repertoire a part. Échec de Server.CreateObject [ par YounB ] J'ai installé PWS 4.0 sous Windows98 S.E,et j'ai cette ... de page d'erreur qui s'affiche a chaque fois que j'ai une page qui contient:[Server.CreateO erreur d'automation en ASP [ par patfac1 ] Je suis en train de me mettre à l'ASP ;-) alors soyez pas moqueurs :DJ'ai fait une page , je l'heberge sur mon serveur local ( IIS de winXP pro ) et Code d'erreur '800a01a8' dans une page ASP. [ par Noro ] Lors de l'execution d'un vbscript sur une page ASP, où j'essaye d'afficher les informations de la requête dans des zones de texte. par exemple:documen ASP et Exception [ par toto0101 ] J'ai cette erreur en ASP"error '80020009' Une exception s'est produite. "L'erreur se trouve dans ces lignes mais je ne vois pas ou, si quelqu'un pourr Erreur Timeout : message personalisée ? [ par DataJim ] BonjourJe souhaite modifier le message "Pages ASP error 'ASP 0113' Délai d'exécution du script dépassé "pour mettre un message d'erreur personalisé.So Message d'erreur [ par LostWorld ] Salut, Je débute en ASP (suis webdesigner à la base) et il parait que "Option explicit" est quelque chose de vachement conseillé. Moi je veux bien l'u pb sondage!!!! [ par ronando ] J'ai un pb avec un sondage...tout ce passe bien lorsque celui ci est inserer ds une page HTML mais des qu'il est dans une page ASP il bug ..avec comme Erreur sur une page html [ par loufi66 ] J'ai tapé un script (html,asp et vbscript) et lorsque je lance la page, je reçois un message d'erreur.Erreur de compilation Microsoft VBScript erreur Récupération des erreurs [ par Benz ] Bonjour,J'aimarais savoir s'il existe une fonction qui permet de récupérer n'importe quel type d'erreur.J'ai placé dans en haut de ma page :On Error


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.