Comment arrêter ASP.Net site web de jeter HttpUnhandledException exception lors de la navigation en avant/en arrière à travers paginé liste des articles?

J'ai un ASP.Net hébergement du site web qui affiche une liste de résultats comme un DataGrid ou ASP.Net Répéteur avec la pagination des résultats.

Si l'on fait défiler rapidement à travers les pages en appuyant sur les boutons Précédent/Suivant onglets parfois un HttpUnhandledException est générée et le débogage page affichée au lieu de la prochaine liste des résultats.

Le débogage de l'écran se présente comme suit:

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentException: Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument)
at System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument)
at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
--- End of inner exception stack trace ---
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.contacts_default_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

J'ai trouvé la référence à une erreur lors de la
http://blogs.msdn.com/amitsh/archive/2007/07/31/why-i-get-invalid-postback-or-callback-argument-errors.aspx

mais la solution recommandée est de mettre à false, mais cela semble créer un trou de sécurité. Les commentaires recommander plusieurs alternatives, mais tous semblent assez complexes, puisqu'ils nécessitent l'ajout d'un code à chaque grille de données ou de contrôle Repeater utilisé tout au long de mon site.

Est-il plus général de la solution qui peut être fait sans sacrifier la sécurité?

OriginalL'auteur Nissan | 2008-12-02