Ответ 1
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\products
-
Server.MapPath("..")
возвращаетD:\WebApps\shop
-
Server.MapPath("~")
возвращаетD:\WebApps\shop
-
Server.MapPath("/")
возвращаетC:\Inetpub\wwwroot
-
Server.MapPath("/shop")
возвращаетD:\WebApps\shop
Если Path начинается с косой черты (/
) или обратной косой черты (\
), MapPath()
возвращает путь, как если бы путь был полным, виртуальным путем.
Если Путь не начинается с косой черты, MapPath()
возвращает путь относительно каталога обрабатываемого запроса.
Примечание: в С#, @
является оператором строковой строки, означающим, что строка должна использоваться как "как есть" и не обрабатываться для escape-последовательностей.
Сноска
-
Server.MapPath(null)
иServer.MapPath("")
будет производить этот эффект тоже.