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