2010-05-26 16 views
0

Nous allons avoir un problème avec un 3.5 .NET site WebForms où de temps en temps nos journaux d'erreurs commencent à remplir avec le message d'erreur suivant:Runtime HttpException affectant seulement une page/usercontrol

« contrôles multiples avec le même ID ' ctl09 'ont été trouvés FindControl requiert que les contrôles aient des identifiants uniques. "

Je connais très peu l'exception car je ne l'ai jamais vu lors du débogage local et je ne l'ai jamais détecté dans les journaux d'erreurs assez tôt pour exécuter une session de débogage à distance. Je sais qu'un recycle de pool d'applications résout le problème.

Cela n'affecte qu'une seule page [trafic élevé] sur le site. La chose étrange est que le site utilise la logique de génération d'ID pré-4.0. Ainsi, lorsque la page fonctionne, il n'y a pas d'élément html dans la source de vue entière qui n'est pas un préfixe d'ID de contrôle généré automatiquement suivi par les ID 'réels' (c.-à-d. Ctl09_someID_someOtherID).

Donc, 2 questions principales, bien que toutes les idées sont les bienvenues:

  1. Quel serait le cas où un contrôle d'arrêter au hasard construire correctement?
  2. À part le Global.asax, comment puis-je piéger cette erreur et forcer le contrôle à ... recompiler? App piscine à recycler?

Je suis à peu près perplexe.

Répondre

0
  1. Rien pour autant que je sache, seule une entité extérieure interférant avec le cycle de vie de page ou AJAX postback pourrait provoquer cela, si chaque contrôle est généré, à son tour, alors vous ne « au hasard » rencontrez des identifiants en double.

  2. Je ne pense pas que ce soit une option viable, le pool d'applications recycle? Pas question, il doit y avoir une raison valable pour ça.

Peut-être que plus d'info/code serait utile? Est-ce une page particulière? Utilisez-vous ViewState? Il y a beaucoup de raisons pour les identifiants de contrôle «douteux».

+0

Il s'agit d'une page particulière qui utilise un contrôle serveur qui stocke les données dans l'état d'affichage. Je suis en train de supprimer le stockage ViewState maintenant. Qu'en est-il du stockage des données dans l'état d'affichage qui pourrait causer le problème? – fordareh

+0

Bien ViewState doit trouver des contrôles après la publication de la page, donc s'il y a des incohérences, il va exploser, horriblement. Êtes-vous capable de reproduire l'erreur? – Mantorok