Tidak dapat menggunakan Server.MapPath

111

Apa yang harus saya lakukan agar Server.MapPathberhasil?
saya sudahusing System.Web;

apa lagi? Saat saya mengetik Servertidak ada opsi hasil cepat (intelli-sense) untuk Server.

Ada bantuan?

a1204773
sumber
1
Anda perlu memberikan lebih banyak informasi. Proyek macam apa ini? Mengapa Anda ingin menjalankan Server.MapPath? Apakah ini proyek formulir web dan apakah Anda menulis kode di subkelas Halaman atau dalam fungsi render ASPX?
Dai
C # Winforms .. saya ingin memeriksa ketersediaan file di server
a1204773

Jawaban:

286

Anda dapat mencoba menggunakan ini

    System.Web.HttpContext.Current.Server.MapPath(path);

atau gunakan HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);
DotNetUser
sumber
1
Mereka tidak bekerja .... Kesalahan 1 Jenis atau nama ruang nama 'HttpContext' tidak ada di ruang nama 'System.Web' (apakah Anda kehilangan referensi perakitan?) ... Kesalahan 2 Jenis atau nama ruang nama 'Hosting' tidak ada di ruang nama 'System.Web'
a1204773
Sepertinya Anda menggunakan winforms, Anda mungkin ingin melihat tautan ini lalu debugging.com/bug/18951
DotNetUser
4
Saya juga, HostingEnvironment.MapPath berfungsi dan saya menggunakannya di luar pengontrol.
Lukas
Pertama-tama proyek Anda perlu mereferensikan System.Web.dll dan itu akan berhasil
ihebiheb
Bagaimana cara membaca file yang ada di direktori ini "~ / AppData / Roaming"?
Murlidhar Fichadia
14

Proyek Anda perlu referensi perakitan System.Web.dll. Server adalah objek bertipe HttpServerUtility. Contoh:

HttpContext.Current.Server.MapPath(path);
Leandro Gomide
sumber
3
Tidak dapat menemukan referensi seperti itu Saya hanya menemukan dua ini: System.Web.ApplicationServices, System.Web.Services ....
a1204773
4

System.Web.HttpContext.Current.Server.MapPath("~/") memberikan null jika kita menyebutnya dari utas.

Jadi, Coba gunakan

System.Web.Hosting.HostingEnvironment.MapPath("~/")

Ravindra Singh Chhabra
sumber
1

Firt menambahkan referensi System.web, jika Anda tidak punya. Lakukan itu di folder Referensi .

Anda kemudian dapat menggunakan Hosting.HostingEnvironment.MapPath(path);

jdisla
sumber
1
bool IsExist = System.IO.Directory.Exists(HttpContext.Current.Server.MapPath("/UploadedFiles/"));
if (!IsExist)
    System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath("/UploadedFiles/"));

StreamWriter textWriter = File.CreateText(Path.Combine(HttpContext.Current.Server.MapPath("/UploadedFiles/") + "FileName.csv"));
var csvWriter = new CsvWriter(textWriter, System.Globalization.CultureInfo.CurrentCulture);
csvWriter.WriteRecords(classVM);
pengguna13048334
sumber
Jawaban hanya kode dianggap berkualitas rendah: pastikan untuk memberikan penjelasan tentang fungsi kode Anda dan bagaimana cara menyelesaikan masalah. Ini akan membantu penanya dan pembaca yang akan datang jika Anda dapat menambahkan lebih banyak informasi dalam posting Anda. Lihat Menjelaskan sepenuhnya jawaban berbasis kode
Calos
0

Coba tambahkan System.Websebagai referensi untuk proyek Anda.

jabu.hlong
sumber
0

Saya tahu posting ini berumur beberapa tahun, tetapi yang saya lakukan adalah menambahkan baris ini ke bagian atas kelas Anda dan Anda masih dapat menggunakan Server.MapPath

Dim Server = HttpContext.Current.Server

atau kamu bisa membuat fungsi

Public Function MapPath(sPath as String)
    return HttpContext.Current.Server.MapPath(sPath)
End Function

Saya semua tentang membuat segalanya lebih mudah. Saya juga telah menambahkannya ke kelas Utilitas saya kalau-kalau saya mengalami ini lagi.

Guy Cothal
sumber