Zainstalowaliśmy .NET 4.5 Framework na jednym z naszych serwerów internetowych. Nasze aplikacje są przeznaczone dla .net 4.0 i uruchamiają wiele serwerów za równoważeniem obciążenia.Zdarzenie ASP.NET EventValidation kończy się niepowodzeniem, gdy platforma .NET 4.5 jest zainstalowana tylko na jednym serwerze za modułem równoważenia obciążenia.
Po instalacji otrzymujemy następujący komunikat o błędzie jakiegoś POST żąda
ERROR_NAME = System.ArgumentException error_message = Błędny ogłaszania zwrotnego lub zwrotnej argument. Sprawdzanie poprawności zdarzeń jest włączone przy użyciu w konfiguracji lub <% @ Page EnableEventValidation = "true"%> na stronie. Ze względów bezpieczeństwa funkcja ta weryfikuje, czy argumenty dotyczące wywołania zwrotnego lub wywołania zwrotnego pochodzą z kontrolki serwera, która pierwotnie je wyrenderowała. Jeśli dane są poprawne i oczekiwane, użyj metody ClientScriptManager.RegisterForEventValidation, aby zarejestrować dane dotyczące oddzwonienia lub wywołania zwrotnego do sprawdzania poprawności. error_details = Źródło: System.Web
Wartość __EVENTVALIDATION w treści żądania jest inna, gdy zażąda tego serwer z instalacją .net 4.5. MSDN wspomina, że kryptografia zmienia się w .net 4.5 używa konfiguracji opt-in, więc domyślnie powinna być kompatybilna wstecz.
Czy istnieje zmiana konfiguracji, bez wyłączania sprawdzania poprawności zdarzeń, muszę zrobić dla _EVENTVALIDATION, aby zachowywać się tak samo na komputerach z zainstalowanym .net 4.5, ponieważ zachowuje się tylko z .net 4.0?
Czy dzieje się to tylko w przypadku izolacji na tym serwerze? Czy funkcja równoważenia obciążenia jest włączona? Czy to możliwe, że ten serwer odbiera wpis z innego serwera WWW, który nie ma 4.5? –
Działa dobrze w sposób izolowany. Myślę, że problem występuje, gdy początkowe żądanie pochodzi z serwera bez .net 4.5, a post przenosi go na serwer z zainstalowaną wersją .net 4.5. – chrisk
Sprawdź, czy nie zmienił on kluczy maszynowych i takich, ale najlepiej jest sprawdzić nie ma innych problemów i nie można się z nimi skontaktować na pozostałych serwerach. W międzyczasie zaimplementuj funkcję wytrwałości w module równoważenia obciążenia, aby wyeliminować połączenia między serwerami do momentu, aż wszystkie będą mogły zostać załatane. Tryby hybrydowe nigdy nie wydają się działać poprawnie. –