RastaROCKET Geschrieben 4. Oktober 2008 Geschrieben 4. Oktober 2008 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 Zitieren
RastaROCKET Geschrieben 6. Oktober 2008 Autor Geschrieben 6. Oktober 2008 (bearbeitet) Hallo Gemeinde! Das Zauberwort heißt Wildcards! IIS -> Eigenschaften der WebSite -> Tab Basisverzeichnis -> Konfiguration 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 6. Oktober 2008 von RastaROCKET Zitieren
Empfohlene Beiträge
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.