Không thể sử dụng Server.MapPath


111

Tôi phải làm gì để đạt được Server.MapPathhiệu quả?
Tôi cóusing System.Web;

gì nữa? Khi tôi nhập Server, không có tùy chọn kết quả nhanh (intelli-sense) cho Server.

Bất kỳ giúp đỡ?


1
Bạn cần cung cấp thêm thông tin. Đây là loại dự án gì? Tại sao bạn muốn chạy Server.MapPath? Đây có phải là một dự án biểu mẫu web và bạn đang viết mã trong một lớp con của Trang hoặc trong một chức năng kết xuất của ASPX?
Dai

C # Winforms .. tôi muốn nó để kiểm tra các tập tin sẵn có trên máy chủ
a1204773

Câu trả lời:


286

bạn có thể thử sử dụng cái này

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

hoặc dùng HostingEnvironment.MapPath

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

1
Chúng không hoạt động .... Lỗi 1 Loại hoặc tên không gian tên 'HttpContext' không tồn tại trong không gian tên 'System.Web' (bạn có thiếu tham chiếu lắp ráp không?) ... Lỗi 2 Loại hoặc tên không gian tên 'Lưu trữ' không tồn tại trong không gian tên 'System.Web'
a1204773

có vẻ như bạn đang sử dụng winforms, bạn có thể muốn xem liên kết này sau đó debugging.com/bug/18951
DotNetUser

4
Tôi cũng vậy, HostingEnosystem.MapPath đã hoạt động và tôi đang sử dụng nó bên ngoài bộ điều khiển.
Luke

Trước hết nhu cầu của dự án của bạn để tham khảo System.Web.dll và nó sẽ làm việc
ihebiheb

Làm thế nào để đọc một tệp có trong thư mục "~ / AppData / Roaming" này?
Murlidhar Fichadia

14

Dự án của bạn cần phải tham khảo lắp ráp System.Web.dll. Máy chủ là một đối tượng của kiểu HttpServerUtility. Thí dụ:

HttpContext.Current.Server.MapPath(path);

3
Cant't tìm tài liệu tham khảo như vậy tôi chỉ tìm thấy này hai: System.Web.ApplicationServices, System.Web.Services ....
a1204773

4

System.Web.HttpContext.Current.Server.MapPath("~/") cho giá trị null nếu chúng ta gọi nó từ một chuỗi.

Vì vậy, hãy thử sử dụng

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


1

Firt thêm một tham chiếu đến System.web, nếu bạn không có. Làm điều đó trong thư mục Tài liệu tham khảo .

Sau đó bạn có thể sử dụng 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);

Các câu trả lời chỉ có mã được coi là chất lượng thấp: hãy đảm bảo cung cấp lời giải thích mã của bạn hoạt động như thế nào và cách nó giải quyết vấn đề. Nó sẽ giúp ích cho cả người hỏi và người đọc trong tương lai nếu bạn có thể bổ sung thêm thông tin trong bài đăng của mình. Xem Giải thích các câu trả lời hoàn toàn dựa trên mã
Calos

0

Hãy thử thêm System.Weblàm tài liệu tham khảo cho dự án của bạn.



0

Tôi biết bài đăng này đã được vài năm, nhưng những gì tôi làm là thêm dòng này vào đầu lớp của bạn và bạn vẫn có thể sử dụng Server.MapPath

Dim Server = HttpContext.Current.Server

hoặc bạn có thể tạo ra một chức năng

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

Tôi muốn làm cho mọi thứ dễ dàng hơn. Tôi cũng đã thêm nó vào lớp Tiện ích của mình đề phòng trường hợp tôi lại gặp phải vấn đề này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.