Siapa pun dapat menjelaskan perbedaan antara Server.MapPath(".")
, Server.MapPath("~")
, Server.MapPath(@"\")
dan Server.MapPath("/")
?
Server.MapPath menentukan jalur relatif atau virtual untuk memetakan ke direktori fisik .
Server.MapPath(".")
1 mengembalikan direktori fisik file saat ini (mis. Aspx) yang sedang dieksekusiServer.MapPath("..")
mengembalikan direktori indukServer.MapPath("~")
mengembalikan jalur fisik ke root aplikasiServer.MapPath("/")
mengembalikan path fisik ke root dari nama domain (tidak harus sama dengan root dari aplikasi)Sebuah contoh:
Katakanlah Anda menunjuk aplikasi situs web ( http://www.example.com/
) ke
C:\Inetpub\wwwroot
dan menginstal aplikasi toko Anda (sub web sebagai direktori virtual di IIS, ditandai sebagai aplikasi) di
D:\WebApps\shop
Misalnya, jika Anda memanggil Server.MapPath()
permintaan berikut:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
kemudian:
Server.MapPath(".")
1 kembaliD:\WebApps\shop\products
Server.MapPath("..")
kembali D:\WebApps\shop
Server.MapPath("~")
kembali D:\WebApps\shop
Server.MapPath("/")
kembali C:\Inetpub\wwwroot
Server.MapPath("/shop")
kembali D:\WebApps\shop
Jika Path dimulai dengan garis miring ke depan ( /
) atau garis miring ke belakang ( \
), jalur yang MapPath()
dikembalikan seolah-olah Jalur itu jalur penuh, virtual.
Jika Path tidak dimulai dengan garis miring, jalur akan MapPath()
dikembalikan relatif ke direktori permintaan yang sedang diproses.
Catatan: dalam C #, @
adalah operator string literal kata demi kata yang berarti bahwa string harus digunakan "apa adanya" dan tidak diproses untuk urutan escape.
Catatan kaki
Server.MapPath(null)
dan Server.MapPath("")
akan menghasilkan efek ini juga .
HostingEnvironment.MapPath
karena tidak memerlukanHttpContext
: stackoverflow.com/q/944219/3205Hanya untuk sedikit memperluas jawaban @ splattne:
MapPath(string virtualPath)
panggilan berikut:MapPath(VirtualPath virtualPath)
pada gilirannya panggilanMapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
yang berisi hal-hal berikut:Jadi, jika Anda menelepon
MapPath(null)
atauMapPath("")
, Anda secara efektif meneleponMapPath(".")
sumber
1)
Server.MapPath(".")
- Mengembalikan "Direktori Fisik Saat Ini" dari file (misalnyaaspx
) yang dieksekusi.Ex. Seharusnya
D:\WebApplications\Collage\Departments
2)
Server.MapPath("..")
- Mengembalikan "Direktori Induk"Ex.
D:\WebApplications\Collage
3)
Server.MapPath("~")
- Mengembalikan "Jalan Fisik ke Root Aplikasi"Ex.
D:\WebApplications\Collage
4)
Server.MapPath("/")
- Mengembalikan jalur fisik ke akar Nama DomainEx.
C:\Inetpub\wwwroot
sumber