Ответы:
Server.MapPath указывает относительный или виртуальный путь для сопоставления с физическим каталогом .
Server.MapPath(".")1 возвращает текущий физический каталог исполняемого файла (например, aspx)Server.MapPath("..") возвращает родительский каталогServer.MapPath("~") возвращает физический путь к корню приложенияServer.MapPath("/") возвращает физический путь к корню доменного имени (не обязательно совпадает с корнем приложения)Пример:
Допустим, вы указали приложение веб-сайта ( http://www.example.com/) на
C:\Inetpub\wwwroot
и установил приложение магазина (суб-Интернет как виртуальный каталог в IIS, помеченный как приложение) в
D:\WebApps\shop
Например, если вы позвоните Server.MapPath()в следующем запросе:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
тогда:
Server.MapPath(".")1 возвратD:\WebApps\shop\productsServer.MapPath("..") возвращается D:\WebApps\shopServer.MapPath("~") возвращается D:\WebApps\shopServer.MapPath("/") возвращается C:\Inetpub\wwwrootServer.MapPath("/shop") возвращается D:\WebApps\shopЕсли Path начинается с прямой косой черты ( /) или обратной косой черты ( \), MapPath()возвращает путь, как если бы путь был полным, виртуальным путем.
Если Path не начинается с косой черты, MapPath()возвращает путь относительно каталога обрабатываемого запроса.
Примечание: в C # @это буквальный оператор строковой строки, означающий, что строку следует использовать «как есть», а не обрабатывать для escape-последовательностей.
Сноски
Server.MapPath(null)и Server.MapPath("")будет производить этот эффект тоже .HostingEnvironment.MapPathкак это не требуется HttpContext: stackoverflow.com/q/944219/3205
Просто чтобы немного расширить ответ @ splattne:
MapPath(string virtualPath) называет следующее:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
MapPath(VirtualPath virtualPath)в свою очередь звонки, MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)которые содержат следующее:
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
Так что, если вы звоните MapPath(null)или MapPath(""), вы эффективно звонитеMapPath(".")
1) Server.MapPath(".")- Возвращает «Текущий физический каталог» aspxисполняемого файла (например ).
Ex. предполагать D:\WebApplications\Collage\Departments
2) Server.MapPath("..")- возвращает «Родительский каталог»
Ex. D:\WebApplications\Collage
3) Server.MapPath("~")- возвращает «Физический путь к корню приложения».
Ex. D:\WebApplications\Collage
4) Server.MapPath("/")- возвращает физический путь к корню доменного имени
Ex. C:\Inetpub\wwwroot