Je reçois l'exception p>
non valide postback ou un argument rappel. La validation d'événement est activé à l'aide en configuration ou <% @ Page EnableEventValidation = "true" %> dans un page. Pour des raisons de sécurité, cette fonctionnalité vérifie que les arguments à Postback ou événements de rappel proviennent à partir de la commande de serveur à l'origine les rendait. Si les données est valide et prévu, utilisez la ClientScriptManager.RegisterForEventValidation Procédé pour enregistrer la données PostBack ou rappel pour validation. p> blockQuote>
Avec la trace de pile suivante p>
[System.ArgumentException: non capturable Exception: postback ou non valide l'argument rappel. La validation d'événement est activé à l'aide de configuration ou <% @ Page EnableEventValidation = "true" %> dans un page. Pour des raisons de sécurité, cette fonctionnalité vérifie que les arguments à Postback ou événements de rappel proviennent à partir de la commande de serveur à l'origine les rendait. Si les données est valide et prévu, utilisez la ClientScriptManager.RegisterForEventValidation Procédé pour enregistrer la données PostBack ou rappel pour validation.] à System.Web.UI.ClientScriptManager.ValidateEvent (String uniqueId argument String) à System.Web.UI.Control.ValidateEvent (String uniqueID, String eventArgument) à System.Web.UI.WebControls.LinkButton.RaisePostBackEvent (String eventArgument) à System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) à System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler SourceControl, String eventArgument)
à System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) à System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) p> blockQuote>L'exception se produit après avoir soumis un formulaire, puis en cliquant rapidement sur un LinkButton pour télécharger un fichier sur la même page avant que la page rechargements à nouveau. p>
Quelqu'un peut-il expliquer les détails des raisons pour lesquelles cette exception se produit lors de l'exécution des actions décrites ci-dessus? P>
Merci à l'avance! P>
5 Réponses :
S'ils cliquent avant qu'une page ait une chance de rendre pleinement rendu, les champs __eventValidation ne vont pas avoir été complètement écrits - ainsi votre erreur.
Maintenant, ceci a été corrigé dans 3.5 SP1 / 3.0 SP2, et est configurable dans web.config; p> La valeur par défaut est vraie - donc quelle version de .NET êtes-vous en cours d'exécution? Vous pouvez toujours désactiver le côté du client des boutons jusqu'à ce que la page ait fini de charger. P> p>
Ce doit être l'un des messages d'erreur les plus frustrants de .NET, mais une fois que vous avez une idée de ce qui se passe, cela a du sens. .NET aime savoir tout ce qui se passe. Il garde une trace de tous les éléments qu'il a placés sur la page. Le long de ces mêmes lignes, .Net est offensé lorsqu'il reçoit une contribution de quelque chose qu'il ne connaissait pas. Dans votre cas, on dirait que, au moment où vous cliquez sur le linkbutton, .Net ne pense pas que cela devrait être là. Dans mon expérience, il y a deux raisons probables à cela: p>
Vous faites sur la magie de côté client qui crée de nouvelles entrées ou clonage des entrées existantes. p> li>
Bien que la soumission de formulaire soit traitée, .NET fait quelque chose sur le Linkbutton qui le fait ne plus être disponible. Quelques exemples de ceux-ci que j'ai couru sont lorsque votre LinkButton est créé de manière dynamique dans le backend ou que vous utilisez UpdatePanels et que leur contenu est modifié au cours de la soumission du formulaire. p> li> ol>
Fondamentalement, je crois que si vous traversez le code de soumission de formulaire et surveille ce linkbutton, vous verrez .net l'oublier, ce qui déclenche naturellement cette "exception de sécurité" lorsque le Linkbutton est cliqué. P>
Je suis d'accord avec vos suggestions. Ce qui se passe dans mon cas a à voir avec le point n ° 2. Cependant, je suis incapable d'identifier la façon dont il échoue. Les commandes doivent être rendues de la même manière que sur la charge de la page d'origine (pré-post-planback). Mon linkbutton est à l'intérieur d'un dataliste. J'ai essayé d'utiliser la clause! Ispostback avant de lier mon DATALISTE, mais il échoue toujours.
"Mon linkbutton est à l'intérieur d'un dataliste" est l'énoncé clé. Le dataliste est-il en train de rebondir sur le post-plan? Si tel est le cas, le LinkButton d'origine est éliminé et que New Linkbutton est créé. C'est fonctionnellement et esthétiquement identique, mais .Net connaissez la différence et lancez cette erreur.
Utilisez ceci dans la page.Asx dans la page Tag EnableventValidation = "False" P>
Utiliser activéventvalidation = "False" est mauvais car il diminue la sécurité.
Je suis convenu qu'il diminuait la sécurité mais je trouve la solution pour que toute suggestion qui puisse résoudre le problème .... @Dirk Strauss
J'ai trouvé que les formes HTML peuvent causer ce problème dans WebForms si vous ne les supprimez pas à partir d'un modèle p>
Cette erreur apparaissait par intermittence pour moi, sur une très grande page. p>
J'ai découvert que si un bouton a été cliqué sur avant em> la page avait terminé le chargement, cela donnerait cette erreur. P>
En attente de la page de chargement complètement avant de cliquer sur le bouton, je n'ai pas reçu l'erreur. P>
J'avais la même exception sur le serveur de production lorsque j'ai installé .NET Framework 4.5. À cause de cela, j'ai dû restaurer .net 4.0. BTW, .NET 4.5 est juste une mise à jour (ou un service de service) de .NET 4.0, ils ne pouvaient pas vivre côte à côte. Quelles choses goofy ...