ไม่สามารถใช้ Server.MapPath


111

ฉันต้องทำอะไรเพื่อให้Server.MapPathทำงานได้?
ฉันมีusing System.Web;

อะไรอีก? เมื่อฉันพิมพ์Serverไม่มีตัวเลือกผลที่รวดเร็ว (Intelli-ความรู้สึก) Serverสำหรับ

ความช่วยเหลือใด ๆ


1
คุณจำเป็นต้องให้ข้อมูลเพิ่มเติม. โครงการนี้เป็นโครงการประเภทใด ทำไมคุณถึงต้องการเรียกใช้ Server.MapPath? นี่เป็นโครงการรูปแบบเว็บและคุณกำลังเขียนโค้ดในคลาสย่อยของเพจหรือในฟังก์ชันการแสดงผลของ ASPX
ได๋

C # Winforms .. ฉันต้องการให้มันตรวจสอบความพร้อมของไฟล์บนเซิร์ฟเวอร์
a1204773

คำตอบ:


286

คุณสามารถลองใช้สิ่งนี้

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

หรือใช้ HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);

1
ไม่ทำงาน .... ข้อผิดพลาด 1 ประเภทหรือชื่อเนมสเปซ 'HttpContext' ไม่มีอยู่ในเนมสเปซ 'System.Web' (คุณไม่มีการอ้างอิงแอสเซมบลีหรือไม่) ... ข้อผิดพลาด 2 ประเภทหรือชื่อเนมสเปซ 'โฮสติ้ง' ไม่มีอยู่ในเนมสเปซ 'System.Web'
a1204773

ดูเหมือนว่าคุณกำลังใช้ winforms คุณอาจต้องการเห็นลิงค์นี้จากนั้นdebugging.com/bug/18951
DotNetUser

4
ฉันก็เช่นกันHostingEnvironment MapPath ใช้งานได้และฉันใช้มันนอกตัวควบคุม
Luke

ก่อนอื่นโครงการของคุณต้องอ้างอิง System.Web.dll และจะใช้งานได้
ihebiheb

จะอ่านไฟล์ที่อยู่ในไดเร็กทอรี "~ / AppData / Roaming" ได้อย่างไร
Murlidhar Fichadia

14

System.Web.dllโครงการของคุณต้องอ้างอิงประกอบ เซิร์ฟเวอร์เป็นวัตถุประเภทHttpServerUtilityหนึ่ง ตัวอย่าง:

HttpContext.Current.Server.MapPath(path);

3
ไม่พบข้อมูลอ้างอิงดังกล่าวฉันพบเพียงสองสิ่งนี้: System.Web.ApplicationServices, System.Web.Services ....
a1204773


1

เพิ่มข้อมูลอ้างอิงSystem.webหากคุณไม่มี ทำในโฟลเดอร์อ้างอิง

จากนั้นคุณสามารถใช้ 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);

คำตอบที่ใช้รหัสเท่านั้นถือว่ามีคุณภาพต่ำ: อย่าลืมให้คำอธิบายว่าโค้ดของคุณใช้ทำอะไรและแก้ปัญหาอย่างไร จะช่วยให้ผู้ถามและผู้อ่านในอนาคตทั้งสองอย่างหากคุณสามารถเพิ่มข้อมูลเพิ่มเติมในโพสต์ของคุณ ดูการอธิบายคำตอบแบบใช้รหัสทั้งหมด
Calos



0

ฉันรู้ว่าโพสต์นี้มีอายุไม่กี่ปี แต่สิ่งที่ฉันทำคือเพิ่มบรรทัดนี้ที่ด้านบนสุดของชั้นเรียนของคุณและคุณจะยังสามารถใช้เซิร์ฟเวอร์ได้

Dim Server = HttpContext.Current.Server

หรือคุณสามารถสร้างฟังก์ชัน

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

ฉันทุกคนกำลังทำให้สิ่งต่างๆง่ายขึ้น ฉันได้เพิ่มลงในคลาสยูทิลิตี้ของฉันด้วยในกรณีที่ฉันพบสิ่งนี้อีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.