Nem ritkán előforduló feladat, hogy egy relatív URL-ből abszolút URL-t kell előállítanunk, vagy egyszerűen csak fel kell oldanunk a tildét. Erre kiváló a ResolveUrl metódus, ami a Control osztály és így a Page része. De mi van akkor, ha még egy egészen kicsit Page példányunk sincsen, mert például egy HttpModule-ban vagyunk?
Érdemes megismerkedni a VirtualPathUtility osztállyal, van egy rakás hasznos metódusa:
- URL részek lekérdezése: GetDirectory, GetFileName, GetExtension.
- Záró per-jel kezelése: AppendTrailingSlash, RemoveTrailingSlash.
- URL típusának lekérdezése: IsAbsolute, IsAppRelative.
- URL átalakítás: MakeRelative, ToAbsolute, ToAppRelative.
Így már nem is olyan nehéz megoldani a fenti feladatot:
Uri absoluteUri = new Uri( HttpContext.Current.Request.Url, VirtualPathUtility.ToAbsolute( relativeUrl ) );
Azt azonban érdemes tudni, hogy a VirtualPathUtility nem tud query string paramétereket kezelni. Ha arra is szükség van, akkor érdemes körülnézni Michael Palermo és Rick Strahl blogbejegyzései és a hozzá kapcsolódó kommentek között.