Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leutz,

ich richte gerade eine ASP.Net Website im ISS auf meinem vServer ein. Nun sind die Uris der Seiten wie folgt aufgebaut:

meinedomain.de/xxx/yyy/seitexy

Meine Anwendung schießt einfach im Begin_Request Event einen Default-PageHandler dazu (z. b. /index.html). Lokal funktioniert das alles prima, da läuft die Seite allerdings im VisualStudio eigenem Webserver.

Lass ich die Anwenung jetzt im IIS auf meinem vServer laufen kommt der Request ohne /index.html nicht bei meiner Anwendung an. Die Website ist aber eigentlich richtig konfiguriert. Hostheader ist richitg eingetragen.

Ich vermute nur, dass sie nicht an die apsnet_isapi.dll weiter gereicht werden da ja die Endung fehlt. Aber irgendwie muss das doch funktionieren. Habt ihr eine Idee wie ich das hinbekomme?

Vielen Dank schon mal!

Gruß,

Kristof

Geschrieben (bearbeitet)

Hallo Gemeinde!

Das Zauberwort heißt Wildcards!

IIS -> Eigenschaften der WebSite -> Tab Basisverzeichnis -> Konfiguration

wildcards.jpg

Für alle Erweiterungen die oben nicht matchen, wird der Request an die hier aufgeführte DLL weiter gereicht. In diesem Fall die aspnet_isapi.dll.

So kommen auch Anfragen wie www.meineseite.de/rubrik/seite1 bis zu meiner Anwendung.

Um das Request zu verarbeiten wird im EventHandler Application_BeginRequest der Global.asax der Anwenung, einfach der Pagehandler angehängt bzw. geändert:


protected void Application_BeginRequest(object sender, EventArgs e)

    {

      HttpApplication app = (HttpApplication)sender;      

      string fileName = app.Request.Url.LocalPath.ToLower();          


      if (fileName.EndsWith("page.aspx") || fileName.EndsWith("home.aspx") || fileName.IndexOf('.') <= 0)

      {

        string path = app.Request.Url.AbsolutePath;


        if (fileName.IndexOf('.') <= 0 && !fileName.EndsWith("/"))

          path += "/";


        int position = path.IndexOf(".html");


        if (position > 0)

        {

          path = String.Concat(path.Substring(0, position), "/");

        }

        else

        {

          position = path.LastIndexOf('/');

          path = path.Substring(0, position + 1);         

        }

        Trace.Write("---> Path: " + path);       

        HttpContext.Current.RewritePath(string.Concat(path, DefaultPageHandler));       

      }      

    }

Die Methode RewritePath des aktuellen Context ermöglich es die zugrundeliegende, reale URL zu ändern, ohne dass die in der Addresszeile angezeigte URL sich ändert. ;)

Greetings,

Kristof

Bearbeitet von RastaROCKET

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...