Aktualisieren
Ich implementiere eine benutzerdefinierte Seiten-Caching-Lösung, und ich möchte nicht, dass die Anfrage zwischengespeichert oder aus dem Cache abgerufen wird, wenn sie auf eine Formularübermittlung oder eine Art ASP.net-Postback zurückgreift.
Ich versuche herauszufinden, ob das aktuelle HttpRequest ein Postback ist. Gibt es eine Möglichkeit, dies außerhalb des Kontextes einer Seite oder einer anderen Benutzersteuerung zu tun? Anders gesagt, wenn ich innerhalb eines HttpModules bin, habe ich keinen Zugriff auf this.IsPostBack
, aber ich muss immer noch feststellen, ob es tatsächlich ein Postback ist.
Gibt es Postbacks auch immer "Post" -Anfragen oder ist das durch das Enthalten von Formular bestimmt?
Danke!
Überprüfen Sie die Eigenschaft Method
des HttpWebRequest
. Postbacks sollten als POST
in Method
markiert werden.
Die Art und Weise, wie Sie es in Old-School-ASP getan haben, bestand darin, nach erwarteten Post-Back-Parametern im Hauptteil der HTTP-Nachricht ( Request.Form
) zu suchen. Sie könnten den Inhalt der Anfrage nach Daten überprüfen, die wie Postback-Parameter aussehen. Ich bin mir nicht sicher, mit welchem Objekt Sie gerade arbeiten, aber wenn es sich um HttpWebRequest
handelt, können Sie den Anforderungsstream von der Methode GetResponseStream()
des Objekts überprüfen.
Die folgende statische Routine sollte in der Lage sein zu bestimmen, ob die aktuelle Anfrage ein Postback ist oder nicht. Es wird jedoch nur funktionieren, wenn Sie eine ASPX-Seite oder eine davon abgeleitete Seite ausführen.
%Vor% Beachten Sie auch, dass CurrentHandler
möglicherweise noch nicht initialisiert wurde, abhängig davon, in welcher Phase des Anforderungslebenszyklus Sie versuchen, IsPagePostBack
auszuwerten. Ich glaube, dass diese Methode nur zwischen HttpApplication.PostMapRequestHandler
und HttpApplication.ReleaseRequestState
gültig ist.
Ein HTTPHandler hat Zugriff auf den aktuellen HTTPContext. Damit prüfen Sie einige Eigenschaften (Request.RequestType, Request.URLReferrer) und entscheiden manuell, ob es sich um ein PostBack handelt.
Sie können einen Verweis auf die aktuelle Seite erhalten: Holen Sie sich das aktuelle System.Web .UI.Page von HttpContext?
Dann können Sie nach der Page.IsPostBack-Eigenschaft suchen.
Tags und Links asp.net