22 messaggi dal 11 settembre 2011
Salve a tutti.
Ho creato una pagina asp.net di login, con username e password.
Ogni tanto, al click del pulsante, mi esce fuori l'errore sotto riportato.

La cosa non succede più se ricarico la pagina.
----------------------------------------------------

Come faccio a eliminarlo e, soprattutto, che cosa vuol dire?

Grazie

nanu1973

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

Source Error:
The source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL:

1. Add a "Debug=true" directive at the top of the file that generated the error. Example:

<%@ Page Language="C#" Debug="true" %>

or:

2) Add the following section to the configuration file of your application:

<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>

Note that this second technique will cause all files within a given application to be compiled in debug mode. The first technique will cause only that particular file to be compiled in debug mode.

Important: Running applications in debug mode does incur a memory/performance overhead. You should make sure that an application has debugging disabled before deploying into production scenario.

Stack Trace:

[ViewStateException: Invalid viewstate.
Client IP: 83.211.172.227
Port: 3777
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11
ViewState: /wEPDwUKLTMzMTI5MjQxMWRk1AWvs6XLJ7OcjfCGKtb8xfF6Bec=
Referer: https://www.gdl-connect.eu/Login.aspx
Path: /Login.aspx]

[HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.]
System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +106
System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +14
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +237
System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4
System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +37
System.Web.UI.HiddenFieldPageStatePersister.Load() +207
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +105
System.Web.UI.Page.LoadAllState() +43
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6785
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242
System.Web.UI.Page.ProcessRequest() +80
System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
System.Web.UI.Page.ProcessRequest(HttpContext context) +49
ASP.login_aspx.ProcessRequest(HttpContext context) +37
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

________________________________________
Version Information: Microsoft .NET Framework Version:2.0.50727.5448; ASP.NET Version:2.0.50727.5456
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
quando effettui un postback, il Viewstate che trovi nelle tue pagine aspx viene sottoposto a validazione e decodifica, prima che il suo contenuto sia considerato attendibile da Asp.Net. Questo avviene per evitare che utenti con intenzioni poco simpatiche lo manomettano, possibilmente inserendoci dentro dei dati fasulli.

Ora, questo meccanismo di protezione diventa un problema se la tua applicazione non gira su un solo server ma su un cluster di server. E' possibile che inizialmente il Viewstate venga generato e codificato da un server A che possiede una propria chiave. Dopo aver effettuato il postback dalla pagina di login, la richiesta viene gestita dal server B che ha anch'esso una una propria chiave, diversa da quella dell'altro server. Non riuscendo quindi a validare e decodificare il Viewstate, il server B pensa che sia stato manomesso e ti genera quell'errore.

Puoi risolvere il problema dal web.config, dichiarando esplicitamente una chiave che verrà usata da tutti i server compresi nel cluster.
Visita questa pagina:
http://aspnetresources.com/tools/machineKey
Clicca il tasto "Generate Key" e copia tutto l'elemento machinekey che ti uscirà fuori. Incollalo all'interno di <system.web> che si trova nel tuo web.config.

Fonte: http://www.a2zmenu.com/Blogs/AspNet/Validation-of-viewstate-MAC-failed.aspx

ciao

Enjoy learning and just keep making
22 messaggi dal 11 settembre 2011
Grazie mille del tuo consiglio.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.