2011-09-06 2 views
0

Depuis le déplacement d'un serveur, l'erreur "System.Web.HttpException: Impossible de valider les données" s'affiche sur certains de mes ordinateurs clients. La stacktrace est collée ci-dessous.Servermove "System.Web.HttpException: impossible de valider les données"

Je sais que cela se produit probablement lorsque la page est présentée à l'utilisateur, mais qu'elle n'est pas encore complètement chargée (le viewstate) et que l'utilisateur clique sur un contrôle trop tôt. Mais y a-t-il un moyen de le réparer sans dire aux utilisateurs de le prendre facilement? En outre: il n'y a pas de problèmes sur un autre ordinateur, qui se trouve dans un autre domaine (probablement plus proche ou identique au domaine des serveurs). Il a également fonctionné parfaitement avant que le serveur ait été déplacé.

Des idées/idées qui pourraient vous aider?

Stacktrace:

[HttpException (0x80004005): Unable to validate data.] 
    System.Web.Configuration.MachineKey.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +195 
    System.Web.UI.LosFormatter.Deserialize(String input) +60 

[HttpException (0x80004005): Authentication of viewstate failed. 1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 2) Viewstate can only be posted back to the same page. 3) The viewstate for this page might be corrupted.] 
    System.Web.UI.LosFormatter.Deserialize(String input) +118 
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +102 

[HttpException (0x80004005): Invalid_Viewstate 
     Client IP: 10.33.202.162 
     Port: 2080 
     User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) 
     ViewState: dDwyMDE4ODE0MjgxO3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDM+Oz47bDx0PHQ8O3A8bDxpPDA+O2k8MT47aTwyPjtpPDM+O2k8ND47aTw1PjtpPDY+O2k8Nz47aTw4PjtpPDk+O2k8MTA+O2k8MTE+O2k8MTI+O2k8MTM+O2k8MTQ+O2k8MTU+O2k8MTY+O2k8MTc+O2k8MTg+O2k8MTk+O2k8MjA+O2k8MjE+O2k8MjI+O2k8MjM+O2k8MjQ+O2k8MjU+Oz47bDxwPFVXVi0wNDAwO3V3djA0MDA+O3A8VVdWLTAzMDE7dXd2MDMwMT47cDxVV1YtMDMwMDt1d3YwMzAwPjtwPFVXVi0wMjAyO3V3djAyMDI+O3A8R1ZJIFdlYnNlcnZpY2U7Z3Zpd3M+O3A8UG9saXNQbHVzO3BvbGlzcGx1cz47cDxQb2xpcztwb2xpcz47cDxPRFNGMDAxO29kcz47cDxPRFNGMDAyO29kc0YwMDI+O3A8T0RTRjAwMztvZHNGMDAzPjtwPFVEUFM7VURQUz47cDxVREEwMTAwO1VEQTAxMDA+O3A8VURBMDEwMTtVREEwMTAxPjtwPFVEQTAxMDI7VURBMDEwMj47cDxBVkIwMTtBVkIwMT47cDxBVkIwMjtBVkIwMj47cDxBVkIwMztBVkIwMz47cDxQVkM7cHZjPjtwPEdhayBJbmtpams7MT47cDxVU1pPIElua2lqazs0PjtwPEhHTyBCb3V3OzEwNT47cDxIR08gQlZHOzEwMT47cDxIR08gRGV0YW07MTAyPjtwPEhHTyBHVU87MTAzPjtwPEhHTyBVU1pPOzEwND47cDxIR08gQk9VVyBBRzsxMDY+Oz4+Oz47Oz47Pj47Pj47bDxSZXNwb25zZU9wbWFrZW5DaGVja2JveDs+PjzKtZ2M0RXRnZgX5z4o208+vljZ 
     Http-Referer: http://be04uap535uwv38.productie.hrc.ba.uwv.nl/soap/suwiml/beheer/KBS012KBS013Vraag.aspx 
     Path: /soap/suwiml/beheer/KBS012KBS013Vraag.aspx.] 
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +443 
    System.Web.UI.Page.LoadPageViewState() +18 
    System.Web.UI.Page.ProcessRequestMain() +447 

Répondre

0

J'ai souvent vu ces types d'erreurs quand il y a une sorte d'équilibrage de charge en cours. L'ancien serveur est-il toujours en ligne? Existe-t-il un programme d'équilibrage de la charge qui peut envoyer des réponses à l'utilisateur depuis l'ancien serveur, puis la prochaine requête est envoyée au nouveau serveur? Il peut également y avoir une certaine mise en cache DNS, où le trafic continue à aller vers le serveur plus ancien dans certains cas.

D'autres questions: L'ancien serveur est-il déconnecté? Les utilisateurs peuvent-ils ouvrir des sessions anciennes (avec les anciennes clés viewstate) et celles-ci sont renvoyées au nouveau serveur? Dans le pire des cas, si vous n'arrivez pas à comprendre pourquoi cela se produit, vous pouvez définir le machine key (dans le machine.config) sur la nouvelle machine pour qu'il soit le même que l'ancien. Ce n'est généralement pas une bonne pratique, mais cela permet à viewstate d'être crypté et déchiffré sur chaque machine.

Questions connexes