Relativer Pfad bzw. Basis einer URL

Manchmal braucht man ihn einfach, den Basispfad einer Datei d.h. das Verzeichnis (im Dateisystem) oder die zugrunde liegende URL. Z.B. um relative URLs einer CSS-Datei korrekt zu interpretieren.
Häufig wird dann versucht mit String Operationen den nicht-relevanten Teil der absoluten URL auszuschneiden. Dies gelingt aber nicht, wenn z.B. Pfadbestandteile wie “/” auch im QueryStrings vorhanden sein können.

.NET gibt dem Entwickler hierbei eine nützliche Methode im Paket System.IO mit auf den Weg, womit dieses Problem ein für allemal erledigt sein dürfte. In Folge gleich eingepackt in einen einfachen Wrapper:

       public static string getBasePath(string absoluteUrl)
        {
            Uri uri = new Uri(absoluteUrl);
            var newUri = new Uri(uri, System.IO.Path.GetDirectoryName(uri.AbsolutePath));
            return newUri.ToString();
        }

Hurra, Problem gelöst!