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\products
Server.MapPath("..")
zwroty D:\WebApps\shop
Server.MapPath("~")
zwroty D:\WebApps\shop
Server.MapPath("/")
zwroty C:\Inetpub\wwwroot
Server.MapPath("/shop")
zwroty D:\WebApps\shop
Jeś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.MapPath
ponieważ 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