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
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 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.
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 🙂
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
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 🙂
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.