43 messaggi dal 20 giugno 2005
Ciao a tutti.. è da ieri che sto sbattendo il naso su di una cosa che non riesco proprio a capire.

Tempo fa avevo fatto un sito in Asp.Net 2.0
Tutto ha funzionato bene fino a ieri quando ha iniziato a darmi un errore nella pagina di login..

Errore:
Unable to validate data.

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. ---> System.Web.UI.ViewStateException: Invalid viewstate.
Client IP: ......
Port: 15632
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
ViewState: /wEPDwUJMjE4NTg5MTQ1ZGS3mb/CRaeBEh4c4ZlpxAt7KnnOKw==
Referer: https://miosito.it/login.aspx
Path: /index.aspx ---> System.Web.HttpException: Unable to validate data.
at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
--- End of inner exception stack trace ---
--- End of inner exception stack trace ---
at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
at System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState)
at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
at System.Web.UI.HiddenFieldPageStatePersister.Load()
at System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
at System.Web.UI.Page.LoadAllState()
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.index_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Nell'Event Viewer l'errore è questo:
Event message: Viewstate verification failed. Reason: The viewstate supplied failed integrity check.


L'applicazione mi funziona correttamente in locale sul mio pc, su di un server di prova ma non sul server di produzione.
il mio pc:
- Windows XP Pro sp3
- Framework 2.0 sp1
- Framework 3.0 sp1
- Framework 3.5

il server di produzione:
- Windows Server 2003 sp2
- Framework 2.0 sp2
- Framework 3.0 sp2
(c'era anche la Framework 3.5 ma l'ho tolta)

Ho provato a mettere nel web.config enableViewStateMac = false nel tag pages ma non ho risolto il problema.
Spero possiate aiutarmi.. Grazie per l'aiuto,
Silvia
Modificato da Deneb il 28 ottobre 2008 13.54 -
Modificato da Deneb il 28 ottobre 2008 14.05 -
Deneb wrote:
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. --->

e l'hai fatto? perchè magari sul tuo server hai una web garden, cioè più di un processo per app pool, e quindi non puoi far autogenerare la chiave, perchè altrimenti quella di un processo non vedrebbe l'altra.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
43 messaggi dal 20 giugno 2005
Ciao Daniele,
grazie per la risposta.
Ho provato ad esplicitare una chiave validationKey e decryptionKey nel machineKey del web.config ma l'errore rimane.
In pratica continua a dare errore senza mai entrare nella parte PostBack.
Ciao, Silvia
Deneb wrote:
Ho provato ad esplicitare una chiave validationKey e decryptionKey nel machineKey del web.config ma l'errore rimane.
In pratica continua a dare errore senza mai entrare nella parte PostBack.

uhm, che tipo di validation utilizzi?
hai filtri strani o qualcos'altro di mezzo?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
43 messaggi dal 20 giugno 2005
Ho provato un po' di tutto
Attualmente ho messo nel web.config queste righe:

<pages enableViewStateMac="true"
enableViewState="true" >
</pages>
<machineKey validationKey="D859054554444F31342AE980AE1824947DECC7E1BE2B5B023F74B188B04F7BD17B0AD7136CA98394B40B0D8725B759827EA891BA9274A3BEFD98328956BC0296,IsolateApps"
decryptionKey="8C021AB5750F04E9F81DE4ECE9643DCFB5E6B1D176EA8B6966BA3412117C4423,IsolateApps" validation="SHA1" decryption="AES"
/>

ma ho provato anche validation = "3DES"

filtri strani non saprei... tipo??
non sono così brava e non vorrei aver fatto qualcosa involontariamente.
I giorni passati avevo installato la Framework 3.5 ma non so credo dipenda da questo. Poi, lo stesso sito con lo stesso web.config su di un server di test funziona correttamente..
Grazie. Silvia
Deneb wrote:
ma ho provato anche validation = "3DES"

non ci vuole isolateApps. se lo metti, ogni processo avrà la sua versione, quindi nel caso di una web garden, come immagino che sia dall'errore, ottieni questo errore. prova a rimuoverlo.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
43 messaggi dal 20 giugno 2005
Ciao Daniele,



ho tolto l'isolateApps ma niente da fare.
Mi sono andata a documentare sulla Web Garden, perchè come ti ho detto non sono così brava nella configurazione di IIS etc.., e ho visto che il Maximum number of worker processes è uguale ad 1.

43 messaggi dal 20 giugno 2005

Al momento pare abbia risolto.. ma non ho capito il perchè..
Navigando ho trovato che l'attributo action del tag form PUO' dar problemi al Viewstate.
Ho provato a toglierlo anche perchè nel postback faccio un
Response.Redirect("index.aspx")
e per adesso funziona!

non capisco come mai di punto in bianco una pagina funzionante ha smesso di funzionare.. sono sempre più convinta che si sia incriccato qualcosa da qualche parte sul server..

Grazie Daniele per l'aiuto.
alla prossima, Silvia

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.