Apa perbedaan antara Server.MapPath dan HostingEnvironment.MapPath?


174

Apakah ada perbedaan antara Server.MapPath()dan HostingEnvironment.MapPath()? Apakah Server.MapPath()ada kelebihannya HostingEnvironment.MapPath()?

Masalah asli saya adalah memetakan jalur file di server ketika HttpContexttidak ada dan saya tidak bisa meneruskan Servervariabel dari Global.asaxke metode saya.

Saya menggunakan HostingEnvironment.MapPath()karena itu tidak perlu HttpContext. Adakah situasi ketika kedua metode ini akan memberikan hasil yang berbeda?

Jawaban:


204

Server.MapPath()akhirnya panggilan HostingEnvironment.MapPath(), tetapi itu menciptakan VirtualPathobjek dengan opsi spesifik:

The VirtualPathobjek diteruskan ke HostingEnvironment.MapPath()dibangun seperti ini:

VirtualPath.Create(path, VirtualPathOptions.AllowAllPath|VirtualPathOptions.AllowNull);

Sunting : pada kenyataannya, satu-satunya perbedaan adalah bahwa Anda diizinkan untuk melewati nol Server.MapPath(), tetapi tidak bolehHostingEnvironment.MapPath()


2
Jadi saya akan selalu mendapatkan hasil yang sama dari kedua metode, bukan? (tidak termasuk argumen nol)
empi

61
TL; DR : selalu gunakan HostingEnvironment.MapPath()untuk menjaga kewarasan. (+1)
Chris Marisic

15
Pasti ada sesuatu yang berbeda di luar nol karena Server.MapPath("myFolder")berfungsi dengan baik tetapi untuk mendapatkan hasil yang sama dengan HostingEnvironment, saya harus menggunakan HostingEnvironment.MapPath("~/myFolder").
styfle

Jawaban yang fantastis untuk memulai sesi ftp melalui panggilan ke layanan web. Menyelamatkan saya besar hari ini !!!
htm11h

10
Sebenarnya ada perbedaan lain - jalur relatif (mis. Gambar / pict.png) tidak diizinkan dengan HostingEnvironment.MapPath.
NetMage

113

Server.MapPath()membutuhkan sebuah HttpContext. HostingEnvironment.MapPathtidak.


2
tetapi keduanya mengharuskan System.Webdemikian apakah mereka akan bekerja dengan lingkungan OWIN yang Diinangi Sendiri?
vibs2006
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.