Server.MapPath ("."), Server.MapPath ("~"), Server.MapPath (@ "\"), Server.MapPath ("/"). Fərq nədir?

Hər kəs Server.MapPath(".") , Server.MapPath("~") , Server.MapPath(@"\")Server.MapPath("/") arasındakı Server.MapPath(".") izah edə bilərmi?

406
09 нояб. Manu set 09 noyabr. 2008-11-09 12:48 '08 at 12:48 2008-11-09 12:48
@ 2 cavablar

Server.MapPath fiziki kataloqu ilə uyğunlaşmaq üçün nisbi və ya virtual yolunu müəyyənləşdirir.

  • Server.MapPath(".") 1 , yürütülebilir faylın (məsələn, aspx) mövcud fiziki qovluğunu qaytarır.
  • Server.MapPath("..") ana Server.MapPath("..") qaytarır
  • Server.MapPath("~") tətbiq kökünün fiziki yolunu qaytarır.
  • Server.MapPath("/") , domen adının kökünə fiziki yolunu qaytarır (tətbiq kökü ilə eyni deyil)

Məsələn:

Gəlin bir veb-sayt tətbiqini ( http://www.example.com/ ) göstərdiyinizi bildirək

 C:\Inetpub\wwwroot 

və mağazanızın tətbiqini quraşdırdı (sub-web, tətbiq olaraq qeyd olunan IIS virtual kataloq kimi)

 D:\WebApps\shop 

Məsələn, aşağıdakı sorğuda Server.MapPath() :

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

budur

  • Server.MapPath(".") 1 D:\WebApps\shop\products qaytarır
  • Server.MapPath("..") D:\WebApps\shop qaytarır
  • Server.MapPath("~") D:\WebApps\shop qaytarır
  • Server.MapPath("/") C:\Inetpub\wwwroot
  • Server.MapPath("/shop") D:\WebApps\shop qaytarır

Yolu bir çırpma ( / ) və ya terslik ( \ ) ilə başlayırsa, MapPath() yol tam, virtual yol olduğu kimi geri qaytarır.

Path bir çırpma ilə başlamazsa, MapPath() işlənilən tələbin kataloquna nisbətən yolunu qaytarır.

Qeyd: C #, @ simli operatordur, yəni simli qaçış sıraları üçün işlənmiş və işlənməməsi kimi istifadə edilməlidir.

Dəyişiklik

749
09 нояб. Cavab splattne verildi 09 Noyabr. 2008-11-09 13:01 '08 at 13:01 pm 2008-11-09 13:01

Yalnız @splattne-də bir az böyütmək üçün:

MapPath(string virtualPath) aşağıdakılara səbəb olur:

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

MapPath(VirtualPath virtualPath) öz növbəsində aşağıdakıları ehtiva edən MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) :

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

Belə ki, MapPath(null) və ya MapPath("") MapPath(".") , həqiqətən MapPath(".")

20
12 июля '13 в 16:49 2013-07-12 16:49 Cavab 12 iyul 2013 - il saat 4-də saat 09: 00 -da verilir