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("/")
?
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 returnsD:\WebApps\shop\products
-
Server.MapPath("..")
zwracaD:\WebApps\shop
-
Server.MapPath("~")
zwracaD:\WebApps\shop
-
Server.MapPath("/")
zwracaC:\Inetpub\wwwroot
-
Server.MapPath("/shop")
zwracaD:\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
-
Server.MapPath(null)
iServer.MapPath("")
będą również produkować ten efekt .
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(".")
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
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