Odpowiedzi:
Server.MapPath określa ścieżkę względną lub wirtualną do odwzorowania na katalog fizyczny .
Server.MapPath(".")1 zwraca bieżący katalog fizyczny wykonywanego pliku (np. Aspx)Server.MapPath("..") zwraca katalog nadrzędnyServer.MapPath("~") zwraca fizyczną ścieżkę do katalogu głównego aplikacjiServer.MapPath("/") zwraca fizyczną ścieżkę do katalogu głównego nazwy domeny (niekoniecznie jest taki sam jak katalog główny aplikacji)Przykład:
Powiedzmy, że wskazałeś aplikację internetową ( http://www.example.com/) na
C:\Inetpub\wwwroot
i zainstalowałem aplikację sklepu (podsieć jako katalog wirtualny w IIS, oznaczony jako aplikacja) w
D:\WebApps\shop
Na przykład, jeśli zadzwonisz Server.MapPath()z następującym żądaniem:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
następnie:
Server.MapPath(".")1 zwracaD:\WebApps\shop\productsServer.MapPath("..") zwroty D:\WebApps\shopServer.MapPath("~") zwroty D:\WebApps\shopServer.MapPath("/") zwroty C:\Inetpub\wwwrootServer.MapPath("/shop") zwroty D:\WebApps\shopJeśli ścieżka zaczyna się od ukośnika do przodu ( /) lub ukośnika do tyłu ( \), MapPath()zwraca ścieżkę tak, jakby ścieżka była pełną, wirtualną ścieżką.
Jeśli ścieżka nie zaczyna się od ukośnika, MapPath()zwraca ścieżkę względem katalogu przetwarzanego żądania.
Uwaga: w języku C # @jest dosłownie dosłowny operator ciągów, co oznacza, że ciąg powinien być używany „tak jak jest” i nie może być przetwarzany dla sekwencji specjalnych.
Przypisy
Server.MapPath(null)i Server.MapPath("")spowoduje to również ten efekt .HostingEnvironment.MapPathponieważ nie wymaga HttpContext: stackoverflow.com/q/944219/3205
Wystarczy rozwinąć trochę 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 połączenia, 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 dzwoniszMapPath(".")
1) Server.MapPath(".")- Zwraca „bieżący katalog fizyczny” wykonywanego pliku (np. aspx).
Dawny. Przypuszczać D:\WebApplications\Collage\Departments
2) Server.MapPath("..") - Zwraca „katalog macierzysty”
Dawny. D:\WebApplications\Collage
3) Server.MapPath("~") - Zwraca „Fizyczną ścieżkę do katalogu głównego aplikacji”
Dawny. D:\WebApplications\Collage
4) Server.MapPath("/") - Zwraca fizyczną ścieżkę do katalogu głównego nazwy domeny
Dawny. C:\Inetpub\wwwroot