2010-12-10 38 views
5

Vì những lý do khác nhau, trong sự phát triển Tôi thỉnh thoảng muốn chặn một yêu cầu, nói, ~/mystyle.cssASP.NET MVC Nhận tập tin từ đường dẫn ảo

Những gì tôi muốn làm là làm cho công tác đoạn sau đây:

string absFile = VirtualPathUtility.ToAbsolute(file); 
return System.IO.File.ReadAllText(absFile); 

Đường dẫn tuyệt đối này tuyệt đối cho máy chủ web mặc dù nó sẽ không ánh xạ tới "C: \ bất kỳ". Có một phương pháp tương đương để đi đến hệ thống tập tin? (Hoặc một số ReadFromVirtualPath vv?)

Trả lời

18

Sử dụng Server.MapPath() để nhận đường dẫn hệ thống tệp cho đường dẫn ứng dụng được yêu cầu.

string absFile = Server.MapPath(file); 

hoặc

string absFile = HttpContext.Current.Server.MapPath(file); 
6

Bạn cũng có thể sử dụng phương pháp OpenFile trên VirtualPathProvider để có được một Stream chỉ vào tập tin của bạn

var stream = HostingEnvironment.VirtualPathProvider.OpenFile(file); 
var text = new StreamReader(stream).ReadToEnd(); 

Nói chung phương pháp này là thích hợp hơn vì bạn có thể bây giờ, tại một điểm sau đó thực hiện một VirtualPathProvider ở đâu, cho phép nói tất cả các tệp css của bạn ở đâu trong cơ sở dữ liệu.

Các vấn đề liên quan