"Freundliche URLs" ohne .aspx für ASP.NET Webforms

Der Dotnet-Doktor  –  0 Kommentare

Seit der Einführung von ASP.NET Webforms im Jahr 2001 erkennt man die meisten ASP.NET Webforms-basierten Websites an URLs, bei denen der Dateiname auf ".aspx" endet. Es gab immer schon Wege, diese Endung zu ändern oder auf sie zu verzichten. Nun aber liefert Microsoft seit dem ASP.NET Update 2012.2 eine offizielle Lösung in Form des Projekts "Microsoft.AspNet.FriendlyUrls". Alle neu in Visual Studio 2012 (mit installierten Webtools 2012.2 Update) angelegten Webform-Projekte integrieren diese Funktion automatisch. Ältere Projekte kann man über ein Nuget-Paket nachrüsten oder einfach, indem man die Assembly Microsoft.AspNet.FriendlyUrls.dll manuell referenziert.

Dann braucht man noch genau zwei Programmzeilen in seinem Code: Eine Imports-Anweisung (bzw. Using in C#) und ein Aufruf der Erweiterungsmethode EnableFriendlyUrls() innerhalb von Application_Start in der Global.asax-Datei:

Beispiel in Visual Basic .NET:

Imports Microsoft.AspNet.FriendlyUrls
...
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) System.Web.Routing.RouteTable.Routes.EnableFriendlyUrls()
...
End Sub

Dann kann man jede .aspx-Webseite auch ohne die Dateinamenserweiterung aufrufen, also zum Beispiel
http://www.it-visions.de/start statt http://www.it-visions.de/start.aspx.

Die Information "This package contains content for C# Web Application Projects (WAPs)" auf der Nuget-Webseite des Projekts sollte Nutzer von Website-Projekten (Websites sind eine Alternative zu WAPs) nicht abschrecken: Das manuelle Referenzieren der Microsoft.AspNet.FriendlyUrls.dll klappt bei Website-Projekten auf jeden Fall.

Innerhalb von Webseiten-Programmcode kann man auf die einzelne Segmente einer "freundlichen URL" über Request.GetFriendlyUrlSegments() oder bei Model Binding über die Annotation eines Parameters mit [FriendlyUrlSegments] zugreifen. Solche URLs zusammenbauen kann man mit FriendlyUrl.Href().