Zum Inhalt springen

Konfiguration IIS --> WebSite hört auf meinedomain.de/seite ohne .html


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...