Может кто - нибудь объяснить разницу между Server.MapPath(".")
, Server.MapPath("~")
, Server.MapPath(@"\")
и Server.MapPath("/")
?
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("")
будет производить этот эффект тоже .
HostingEnvironment.MapPath
как это не требуетсяHttpContext
: stackoverflow.com/q/944219/3205Просто чтобы немного расширить ответ @ splattne:
MapPath(string virtualPath)
называет следующее:MapPath(VirtualPath virtualPath)
в свою очередь звонки,MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
которые содержат следующее:Так что, если вы звоните
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
источник