Abbiamo installato. NET Framework 4.5 in uno dei nostri server web. Le nostre applicazioni sono mirate per .net 4.0 ed eseguono più server dietro un sistema di bilanciamento del carico.ASP.NET EventValidation non riesce quando .NET 4.5 Framework è installato in un solo server dietro il servizio di bilanciamento del carico
Dopo l'installazione si ottiene il seguente messaggio di errore per qualche POST chiede
ERROR_NAME = System.ArgumentException error_message = Invalid argument postback o callback. La convalida degli eventi è abilitata utilizzando nella configurazione o <% @ Page EnableEventValidation = "true"%> in una pagina. Per motivi di sicurezza, questa funzionalità verifica che gli argomenti di postback o eventi di callback abbiano origine dal controllo server che li ha originariamente visualizzati. Se i dati sono validi e previsti, utilizzare il metodo ClientScriptManager.RegisterForEventValidation per registrare i dati di postback o callback per la convalida. error_details = Sorgente: System.Web
Il valore __EVENTVALIDATION nel corpo della richiesta è diverso quando viene richiesto dal server con installazione .net 4.5. MSDN afferma che le modifiche alla crittografia in .net 4.5 utilizzano la configurazione di opt-in, quindi per impostazione predefinita dovrebbe essere compatibile con le versioni precedenti.
C'è una modifica di configurazione, senza disabilitare la convalida degli eventi, Devo fare per _EVENTVALIDATION comportarsi lo stesso su macchine con .net 4.5 installato come si comporta solo con .net 4.0?
È questo quando si esegue in modo isolato su questo server da solo? Il bilanciamento del carico ha la persistenza abilitata? È possibile che questo server riceva un post da un server web diverso che non ha 4.5? –
Funziona perfettamente in modo isolato. Penso che il problema si verifichi quando la richiesta iniziale proviene da un server senza .net 4.5 e un post lo porta al server con .net 4.5 installato – chrisk
Verificare di non aver cambiato le chiavi della macchina e così via, ma la scommessa migliore è verificare non ci sono altri problemi e si estendono al resto dei server. Nel frattempo, implementare la persistenza nel bilanciamento del carico per eliminare le chiamate tra server fino a quando tutte le patch possono essere riparate. Le modalità ibride non sembrano mai funzionare correttamente. –