Laden...

Redirect bei Postback mit ASP WebForms

Erstellt von Maliko vor 2 Jahren Letzter Beitrag vor 2 Jahren 502 Views
M
Maliko Themenstarter:in
117 Beiträge seit 2012
vor 2 Jahren
Redirect bei Postback mit ASP WebForms

Moin,

ich hab da ein kleines Problem. Und zwar habe ich eine relativ alte ASPX-Webseite, welche ich betreuen muss (zum Neumachen fehlt leider die Zeit). Ich bekomme dabei immer mal wieder folgende Exception in meinen Fehlerlog rein:

Fehlermeldung:
System.ApplicationException: Response.Redirect kann in einem Page-Rückruf nicht aufgerufen werden.
bei System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent)
bei System.Web.HttpResponse.Redirect(String url)
bei Namespace.Klasse.Page_Load(Object sender, EventArgs e) in C:\Pfad\Klasse.aspx.cs:Zeile 39.
bei System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
bei System.Web.UI.Control.OnLoad(EventArgs e)
bei System.Web.UI.Control.LoadRecursive()
bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Bei der entsprechenden Zeile handelt es sich um einen Redirect auf die Login-Seite, wenn die Session des Benutzers abgelaufen ist. Leider passiert es immer mal wieder das der Benutzer sehr lange auf der Seite bleibt und dann versucht mit abgelaufener Session eine Funktion aufzurufen, welche einen Postback macht. Da tritt dann diese Fehlermeldung auf. Ich habe es sowohl mit Response.Redirect als auch mit Server.Transfer versucht, bei beiden kommt die Fehlermeldung.

Hier auch mal eben die Zeilen 37 - 40:


if (Session["userid"] == null)
{
    Response.Redirect("Default.aspx");
}

Hat jemand von euch einen Rat für mich wie ich den User auch bei einem Postback auf die Loginseite schicken kann?

Danke schon mal im Vorraus.

Viele Grüße
Maliko

16.807 Beiträge seit 2008
vor 2 Jahren

Verwende Response.RedirectLocation(), was auch in Callbacks geht.
Jede andere Art muss vorher mit Page.IsCallback geprüft werden; klassische Fehler in WebForms.

PS: es war auch bei WebForms noch nie eine gute Idee die Session als Store für Data aus der UserAuthentication zu missbrauchen 😉

M
Maliko Themenstarter:in
117 Beiträge seit 2012
vor 2 Jahren

Ahhhh. Danke dir. Das kommt davon wenn man sich ASP selbst neben der eigentlichen Arbeit beibringt. Da fehlen einem dann solche Kenntnisse.

PS: es war auch bei WebForms noch nie eine gute Idee die Session als Store für Data aus der UserAuthentication zu missbrauchen 😉

EDIT: Sag das meinem Vorgänger. Ich darf mich damit jetzt nur rumärgern, seit der gekündigt hat.

16.807 Beiträge seit 2008
vor 2 Jahren

Da würde ich eher Deinen Chef als Deinen Vorgänger eines Fehlers beschuldigen.
Der ist schließlich für das Ökosystem seines Unternehmens verantwortlich und dass auch Technologien eingesetzt werden, für die er noch Personal findet; die nicht flüchten, wenn sie sowas bekommen 🙂
Und WebForms ist nun seit ca 10 Jahren überholt/abgekündigt. Sagt also viel aus 🙂

F
10.010 Beiträge seit 2004
vor 2 Jahren

Naja, du weisst selber was draussen in der Praxis so alles noch "rumläuft".
Hatte gerade erst eine Anfrage ob ich "Visual Objects" kann, da der Entwickler dort gegangen ist.
Neu machen lohnt sich derzeit wohl (noch) nicht

16.807 Beiträge seit 2008
vor 2 Jahren

Klar, die Chefs merken das erst, wenns weh tut.
Ich hab mehrere Kunden im Maschinenbau, die Mitarbeiter haben, die (teilweise seit 30 Jahren) ganz alleine zB für zentrale Algorithmen und Co verantwortlích sind - und kein anderer versteht es oder kann es.
Teilweise bekommen diese Mitarbeiter besondere Auflagen (Motorradverbot, werden in die Arbeit gefahren, haben 80 Tage Urlaub als Bonus), nur damit diesen Mitarbeitern nichts passiert ( Bus factor ) bzw diese nicht gehen.

Ich kann solche Mitarbeiter nur beglückwünschen; ein besseres Druckmittel und Status im Unternehmen gibt es kaum 🙂

M
Maliko Themenstarter:in
117 Beiträge seit 2012
vor 2 Jahren

Jup. Viele Chefs kapieren es leider nicht dass es auch nachteile hat bestehende Systeme nicht zu modernisieren. Ich hätte das Portal gerne komplett neu gemacht, allerdings bekomme ich dafür nicht die Zeit. Chef ist der Meinung es läuft doch und das reicht. Da kann man auch nicht mit ihm drüber reden. Und zum Thema überholt. Die Hauptsoftware die von meinen Kollegen und mir Entwckelt wird (reine Inhouseapplication) ist knapp 20 Jahre alt und basierte bis Mitte letzten Jahres noch auf Delphi 7.