Folgende Aufgabe: Wenn eine bestimmte Seite im Portal aufgerufen wird, soll der Nutzer auf Seite X umgeleitet werden. Lösungsansatz: HttpModule.
Eigentlich ganz einfach... das HttModule:
public class Redirect : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.BeginRequest += new System.EventHandler(context_BeginRequest); } void context_BeginRequest(object sender, System.EventArgs e) { if(HttpContext.Current.Request.Url.LocalPath.ToLower() == "/google") { HttpContext.Current.Response.Redirect("http://google.de"); } }
Wir machen ein HttpModule indem wir IHttpModule implementieren.
Wichtig hierbei: "Init" wird beim initialisieren des HttpModules aufgerufen, z.B. wenn beim Applikationsstart. Damit wir ständig bescheid wissen, auf welcher Seite der Nutzer ist, müssen wir ein Eventhandler definieren!
Dieser springt bei mir bei jeden Request an.
Und redirecten...
Jetzt prüfe ich über den HttpContext wo wir uns befinden und wenn wir in der Url z.B. "localhost/google" eingeben, werden wir zu Google weitergeleitet.
Das ganze noch registrieren
Nun müssen wir das noch in der Web.config registrieren (unter httpmodule), z.B. so:
<add name="Redirect" type="Redirect, RedirectModul, Version=1.0.0.0, Culture=neutral"/>
Beschreibung dazu hier.
Eigentlich total easy. Die Geschichte mit dem Eventhandler muss man allerdings wissen ;)