Ein neuer Streit um einen alten Bekannten – „Die Sicherheitsüberprüfung für diese Seite ist ungültig“ – in SharePoint 2010
Veröffentlichung des Originalartikels: 15.09.2011
Ich bin sicher, dass sehr viele Benutzer mit meinen alten Bekannten Die Sicherheitsüberprüfung für diese Seite ist ungültig. Klicken Sie auf die Schaltfläche 'Zurück' Ihres Browsers, aktualisieren Sie dann die Seite, und starten Sie den Vorgang erneut vertraut sind. Diese Fehlermeldung wird in der Regel beim Versuch angezeigt, einer Liste ein Element hinzuzufügen...oft mitten beim Ausführen von RunWithElevatedPrivileges. Viele Benutzer haben häufig auftretende Probleme und allgemeine Problemumgehungen gefunden:
- Häufig auftretende Probleme: Verwenden von RunWithElevatedPrivileges, aber mit einem bereits vorhandenen SPSite- oder SPWeb-Kontext. Das macht keinen Spaß, da der vorhandene SPSite- oder SPWeb-Kontext die Rechte des nachfolgend aufgerufenen RunWithElevatedPrivileges-Elements nicht nutzt.
- Allgemeine Problemumgehung: Legen Sie die AllowUnsafeUpdates-Eigenschaft für SPWeb auf True fest, fügen Sie der Liste das Element hinzu, und legen Sie dann die Eigenschaft wieder auf False fest. Das funktioniert, ist aber schon ein bisschen kompliziert.
In einer ähnlichen Situation fand ich eine eher ungewöhnliche Problemumgehung. Ich verwendete eine benutzerdefinierte Seite für das Verzeichnis _layouts, und im CodeBehind fügte ich ein Listenelement hinzu. Innerhalb von nur 2 Minuten war das Problem gelöst, da ich schon so oft vor dieser Situation stand (bis zurück zu SharePoint 2003, als das FormDigest-Steuerelement hinzugefügt wurde). Dieses Mal wollte ich der Sache auf den Grund gehen, um eine alternative Lösung zu finden. Und dieses Mal habe ich es auch geschafft.
Es hat sich gezeigt, dass Sie SPUtility.ValidateFormDigest() aufrufen können, direkt bevor Sie den RunWithElevatedPrivileges-Code starten. Dadurch steht der Formularüberprüfungscode zur Verfügung, und der Hinzufügevorgang kann erfolgreich ausgeführt werden. In meinem speziellen Fall wurde von LayoutsPageBase geerbt, und mein ASPX-Markup war wie jede andere _layouts-Seite konfiguriert, d. h., es wurde eine Gestaltungsvorlage verwendet, die bereits ein <form>-Element und eine <FormDigest>-Steuerelementinstanz enthielt. Falls diese Elemente in Ihrer Seite oder Gestaltungsvorlage fehlen, müssen Sie sie ebenfalls hinzufügen. Der AllowUnsafeUpdates-Code wird nicht mehr benötigt, weshalb die gesamte Seite und der Prozess wesentlich sicherer sind. Sie sollten sich mit dieser Vorgehensweise auseinandersetzen, wenn Sie an einem ähnlichen Szenario arbeiten.
Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter A New Twist on an Old Friend – "The security validation for this page is invalid" – in SharePoint 2010