Serwer.MapPath("."), Server.MapPath ( " ~ " ), Serwer.MapPath (@ "" ), Serwer.MapPath ("/"). Co za różnica?

Czy ktoś może wyjaśnić różnicę między Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\") i Server.MapPath("/")?

Author: dav_i, 2008-11-09

3 answers

Serwer.MapPath określa względną lub wirtualną ścieżkę do mapowania do fizycznego katalogu.

  • Server.MapPath(".")1 zwraca bieżący fizyczny katalog wykonywanego pliku (np.]}
  • Server.MapPath("..") zwraca Katalog nadrzędny
  • Server.MapPath("~") zwraca fizyczną ścieżkę do katalogu głównego aplikacji
  • Server.MapPath("/") zwraca fizyczną ścieżkę do katalogu głównego nazwy domeny (niekoniecznie jest taka sama jak katalog główny zastosowanie)

przykład:

Załóżmy, że wskazałeś aplikację strony internetowej (http://www.example.com/) na

C:\Inetpub\wwwroot
W 2009 roku firma została założona w 2009 roku, a w 2009 roku firma została założona w 2009 roku.]}
D:\WebApps\shop

Na przykład, jeśli wywołasz Server.MapPath() w następującym żądaniu:

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

Potem:

  • Server.MapPath(".")1 returns D:\WebApps\shop\products
  • Server.MapPath("..") zwraca D:\WebApps\shop
  • Server.MapPath("~") zwraca D:\WebApps\shop
  • Server.MapPath("/") zwraca C:\Inetpub\wwwroot
  • Server.MapPath("/shop") zwraca D:\WebApps\shop

Jeśli ścieżka zaczyna się ukośnikiem do przodu (/) lub ukośnikiem do tyłu (\), MapPath() zwraca ścieżkę tak, jakby była pełną, wirtualną ścieżką.

Jeśli ścieżka nie zaczyna się ukośnikiem, MapPath() zwraca ścieżkę względem katalogu przetwarzanego żądania.

Notatka: w C#, @ jest dosłownym operatorem łańcuchowym, co oznacza, że łańcuch powinien być używany "tak jak jest", a nie przetwarzany do escape sekwencje.

Przypisy

  1. Server.MapPath(null) i Server.MapPath("") będą również produkować ten efekt .
 770
Author: splattne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:45

Żeby trochę poszerzyć odpowiedź @splattne:

MapPath(string virtualPath) wywołuje następujące:

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

MapPath(VirtualPath virtualPath) z kolei wywołania MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping), które zawierają:

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

Więc jeśli dzwonisz MapPath(null) lub MapPath(""), skutecznie dzwonisz MapPath(".")

 23
Author: dav_i,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 13:49:35

1) Server.MapPath(".") -- zwraca" bieżący katalog fizyczny " wykonywanego pliku (np. aspx).

Ex. Załóżmy D:\WebApplications\Collage\Departments

2) Server.MapPath("..") -- zwraca "Katalog nadrzędny"

Ex. D:\WebApplications\Collage

3) Server.MapPath("~") -- zwraca "fizyczną ścieżkę do katalogu głównego aplikacji"

Ex. D:\WebApplications\Collage

4) Server.MapPath("/") -- zwraca fizyczną ścieżkę do katalogu głównego nazwy domeny

Ex. C:\Inetpub\wwwroot

 3
Author: Vaibhav_Welcomes_You,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 12:23:36