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?


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);

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);

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("~/")


1

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

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


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);

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

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.

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.