Відповіді:
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Якщо шлях починається з косою косою стрілкою вперед ( /) або назад ( \), MapPath()повертає шлях так, ніби Path був повним віртуальним шляхом.
Якщо шлях не починається з косою рисою, MapPath()повертає шлях відносно каталогу запиту, який обробляється.
Примітка: у C # @- це оператор дослівної лінійної прямої строки, що означає, що рядок слід використовувати "як є", а не обробляти для послідовностей евакуації.
Виноски
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), який виконується.
Вих. Припустимо D:\WebApplications\Collage\Departments
2) Server.MapPath("..")- Повертає "батьківський каталог"
Вих. D:\WebApplications\Collage
3) Server.MapPath("~") - Повертає "Фізичний шлях до кореня програми"
Вих. D:\WebApplications\Collage
4) Server.MapPath("/") - Повертає фізичний шлях до кореня Імені домену
Вих. C:\Inetpub\wwwroot