Konu Başlıkları: ASP.NET, HttpRequest, WebPathHelper, Relative & Absolute Url

Uzun süredir asp.net web sitesi sanal dizin (VirtualPath), dizinler, site ana dizini, absolute-relative dizinler ile ilgili bir yazı yazmak istiyordum. En sonunda yardımcı bir statik sınıf hazırladım sizlere faydalı olacağını düşünüyorum. Bu vesile ile yazımıza başlayalım:

Absolute Url: Tam açılımlı internet adresleridir. protokol + etki alanı(veya ip) + port(mevcut ise) + dizin bilgisi içerir ve kesin adres belirtirler. Örneğin “http://mysite.com:4750/images/” tam açılımlı bir internet adresidir.

Relative Url: Bağıl veya göreceli internet adresi şeklinde tabir edebileceğimiz bu tip adresler etki alanı, port v.b. bilgiler içermezler sadece dizin bilgisi ile yerel etki alanı adresini kullanırlar. Örneğin sitenizin etki alanı: “http://mysite.com” olsun “/images/fun/” şeklinde belirtilen göreceli adresin tam açılımı “http://mysite.com/images/fun/” şeklinde olacaktır.

Root Path/Url: Sitenin ana dizinini gösteren adrestir. Tam açılımlı: protokol + etki alanı(veya ip) + port(mevcut ise) + “/”(konmayabilir) şeklinde gösterilebileceği gibi göreceli adresi sadece “/” ile gösterilebilir.

Kısaca internet adres ve dizin ilişkilerine değindikten sonra kolaylık olması için c# da hazırladığım asp.net web sitesi ve programlarınızda size kolaylık sağlayacak programı vereyim. İyi çalışmalar diliyorum.

using System;

using System.Web;

 

/// <summary>

/// Internet Adres Çözümleme Yardımcısı

/// </summary>

public static class WebPathHelper

{

  /// <summary>

  /// Internet sitesinin tam açılımlı adresini verir.

  /// Örn: “http://mysite.com:4750″

  /// </summary>

  public static string RootUrl

  {

    get

    {

      HttpRequest request = HttpContext.Current.Request;

      string authority = request.Url.GetLeftPart(UriPartial.Authority);

      string apppath = request.ApplicationPath;

 

      string url = !string.IsNullOrEmpty(apppath.Substring(1)) ?

        authority + apppath + “/” : authority + “/”;

 

      if (Uri.IsWellFormedUriString(url, UriKind.Absolute))

        return url;

 

      throw new HttpException(string.Format(“Wrong url path: {0}”, url));

    }

  }

 

  /// <summary>

  /// Internet sitesinin göreceli bir adresinden tam açılımlı

  /// adresini elde etmenizi sağlar.

  /// </summary>

  /// <param name=”relativePath”>Göreceli adres Örn: “images/fun”</param>

  /// <returns>Parametrede belirtilen göreceli adresin tam açılımlı

  /// adresini verir</returns>

  public static string GetAbsoluteUrl(string relativePath)

  {

    return RootUrl + relativePath;

  }

}