Egyperces: ResolveUrl Page nélkül

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.

Technorati-címkék:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s