Server.MapPath ("."), Server.MapPath ("~"), Server.MapPath (@ "\"), Server.MapPath ("/"). Apa bedanya?


Jawaban:


809

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 dieksekusi
  • Server.MapPath("..") mengembalikan direktori induk
  • Server.MapPath("~") mengembalikan jalur fisik ke root aplikasi
  • Server.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

  1. Server.MapPath(null)dan Server.MapPath("")akan menghasilkan efek ini juga .

44
Luar biasa. Kami telah berjuang dengan Server.Bloody.MapPath. Terima kasih
gbn

26
Anda akan lebih baik menggunakan HostingEnvironment.MapPathkarena tidak memerlukan HttpContext: stackoverflow.com/q/944219/3205
skolima

25

Hanya untuk sedikit memperluas jawaban @ splattne:

MapPath(string virtualPath) panggilan berikut:

public string MapPath(string virtualPath)
{
    return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}

MapPath(VirtualPath virtualPath)pada gilirannya panggilan MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)yang berisi hal-hal berikut:

//...
if (virtualPath == null)
{
    virtualPath = VirtualPath.Create(".");
}
//...

Jadi, jika Anda menelepon MapPath(null)atau MapPath(""), Anda secara efektif meneleponMapPath(".")


4

1) Server.MapPath(".")- Mengembalikan "Direktori Fisik Saat Ini" dari file (misalnya aspx) 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 Domain

Ex. C:\Inetpub\wwwroot

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.