14 October 2009 HowTo, Http, HttpModule, Module Robert Muehsig

imageFolgende 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 ;)

[ Download Democode ]


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!