Sử dụng mã này:
HttpContext.Current.Server.MapPath("~")
Tham khảo chi tiết:
Server.MapPath
chỉ định đường dẫn tương đối hoặc đường dẫn ảo để ánh xạ tới một thư mục vật lý.
Server.MapPath(".")
trả về thư mục vật lý hiện tại của tệp (ví dụ: aspx) đang được thực thi
Server.MapPath("..")
trả về thư mục mẹ
Server.MapPath("~")
trả về đường dẫn vật lý đến thư mục gốc của ứng dụng
Server.MapPath("/")
trả về đường dẫn vật lý đến gốc của tên miền (không nhất thiết phải giống với đường dẫn gốc của ứng dụng)
Một ví dụ:
Giả sử bạn đã trỏ một ứng dụng trang web ( http://www.example.com/ ) tới
C:\Inetpub\wwwroot
và cài đặt ứng dụng cửa hàng của bạn (web phụ dưới dạng thư mục ảo trong IIS, được đánh dấu là ứng dụng) trong
D:\WebApps\shop
Ví dụ: nếu bạn gọi Server.MapPath
theo yêu cầu sau:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
sau đó:
Server.MapPath(".") returns D:\WebApps\shop\products
Server.MapPath("..") returns D:\WebApps\shop
Server.MapPath("~") returns D:\WebApps\shop
Server.MapPath("/") returns C:\Inetpub\wwwroot
Server.MapPath("/shop") returns D:\WebApps\shop
Nếu Đường dẫn bắt đầu bằng dấu gạch chéo về phía trước (/) hoặc dấu gạch chéo ngược (), MapPath
phương thức trả về một đường dẫn như thể Đường dẫn là một đường dẫn ảo, đầy đủ.
Nếu Đường dẫn không bắt đầu bằng dấu gạch chéo, MapPath
phương thức trả về một đường dẫn liên quan đến thư mục của yêu cầu đang được xử lý.
Lưu ý: trong C #, @ là toán tử chuỗi theo nguyên văn nghĩa là chuỗi phải được sử dụng "nguyên trạng" và không được xử lý cho các chuỗi thoát.
Chú thích
Server.MapPath(null)
và Server.MapPath("")
cũng sẽ tạo ra hiệu ứng này.