Server.MapPath (“.”), Server.MapPath (“~”), Server.MapPath (@ “\”), Server.MapPath (“/”). Fark ne?


Yanıtlar:


809

Server.MapPath , fiziksel bir dizine eşlenecek göreli veya sanal yolu belirtir .

  • Server.MapPath(".")1 , yürütülmekte olan dosyanın (örneğin aspx) geçerli fiziksel dizinini döndürür
  • Server.MapPath("..") üst dizini döndürür
  • Server.MapPath("~") uygulamanın kök dizinine giden fiziksel yolu döndürür
  • Server.MapPath("/") alan adının kök dizinine giden fiziksel yolu döndürür (uygulamanın kök diziniyle aynı olması gerekmez)

Bir örnek:

Diyelim ki bir web sitesi uygulaması ( http://www.example.com/)

C:\Inetpub\wwwroot

ve mağaza uygulamanızı (alt web'i sanal dizin olarak IIS'de, uygulama olarak işaretlenmiş)

D:\WebApps\shop

Örneğin, Server.MapPath()aşağıdaki istekte bulunursanız :

http://www.example.com/shop/products/GetProduct.aspx?id=2342

sonra:

  • Server.MapPath(".")1 dönüşD:\WebApps\shop\products
  • Server.MapPath("..") İadeler D:\WebApps\shop
  • Server.MapPath("~") İadeler D:\WebApps\shop
  • Server.MapPath("/") İadeler C:\Inetpub\wwwroot
  • Server.MapPath("/shop") İadeler D:\WebApps\shop

Yol ileri eğik çizgi ( /) veya ters eğik çizgi ( \) ile MapPath()başlarsa, Yol tam, sanal bir yolmuş gibi bir yol döndürür.

Yol eğik çizgi ile başlamazsa, MapPath()işlenen isteğin dizinine göre bir yol döndürür.

Not: C # 'da, @dize "olduğu gibi" kullanılması ve kaçış dizileri için işlenmemesi anlamına gelen birebir değişmez dize operatörüdür.

Dipnotlar

  1. Server.MapPath(null)ve Server.MapPath("")edecektir de bu etkiyi .

44
Mükemmel. Server.Bloody.MapPath ile mücadele ediyoruz. Teşekkürler
gbn

26
HostingEnvironment.MapPathHttpContext
Gerekmediği

25

@ Splattne'nin cevabını biraz genişletmek için:

MapPath(string virtualPath) aşağıdakileri çağırır:

public string MapPath(string virtualPath)
{
    return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}

MapPath(VirtualPath virtualPath)sırayla MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)aşağıdakileri içeren çağrılar :

//...
if (virtualPath == null)
{
    virtualPath = VirtualPath.Create(".");
}
//...

Yani MapPath(null)ya ararsanız ya MapPath("")da etkili bir şekildeMapPath(".")


4

1) Server.MapPath(".")- Yürütülen dosyanın "Geçerli Fiziksel Dizini" ni döndürür aspx.

Ör. varsaymak D:\WebApplications\Collage\Departments

2) Server.MapPath("..")- "Üst Dizin" i döndürür

Ör. D:\WebApplications\Collage

3) Server.MapPath("~")- "Uygulamanın Köküne Fiziksel Yol" döndürür

Ör. D:\WebApplications\Collage

4) Server.MapPath("/")- Etki Alanı Adının kök dizinine giden fiziksel yolu döndürür

Ör. C:\Inetpub\wwwroot

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.