ASP.NET die Rolle von machineKey
Wenn Ihr Asp.Net das Programm ausführt und auf diesen Fehler stößt: "Validate view status MAC feeled." Wenn diese Anwendung von einer Netzwerkfarm oder einem Cluster gehostet wird, stellen Sie sicher, dass die <machineKey> Konfiguration denselben ValidationKey und denselben Validierungsalgorithmus angibt. AutoGenerate kann in einem Cluster nicht verwendet werden. Was ist also der Zweck von machineKeys, wenn Ihre Anwendung keinen einheitlichen machineKey verwendet? Laut MSDN-Standards: "Konfigurieren Sie Schlüssel, die zur Verschlüsselung und Entschlüsselung von Formular-Authentifizierungscookie-Daten und zur Ansicht von Zustandsdaten sowie zur Validierung von außerhalb des Prozesses befindlichen Sitzungszustandsidentitäten verwendet werden." Mit anderen Worten: Viele der Verschlüsselungen Asp.Net auf den Werten im machineKey angewiesen, wie zum Beispiel dem Formular-Authentifizierungscookie und der Verschlüsselung des ViewState. Standardmäßig wird die Konfiguration des Asp.Net dynamisch von sich selbst generiert, wenn ein einzelner Server natürlich in Ordnung ist, aber wenn mehrere Server lastbalanciert sind, verwendet machineKey ebenfalls eine dynamische Generierungsmethode, wobei der machinekey-Wert auf jedem Server inkonsistent ist, was zu inkonsistenten verschlüsselten Ergebnissen führt, und es kann keine Verifizierung und ViewState geteilt werden, sodass für die Lastverteilung mehrerer Server derselbe machineKey an jedem Standort konfiguriert werden muss.
Algorithmus erzeugt ASP.NET machineKey:
|