2008-10-09 32 views
6

Tôi có một trang something.aspx, có liên quan đến codebehind something.aspx.cs. Trong codebehind đó, tôi muốn biết vị trí hệ thống tập tin của something.aspx. Có cách nào thuận tiện để lấy nó không?cách một trang .ASPX có được đường dẫn hệ thống tệp của nó?

Cập nhật: Tôi nhận được một số câu trả lời xuất sắc, thật không may đã không hoạt động vì điều gì đó khác mà tôi đang làm. Tôi đang mã hóa thêm một số thông tin về URL tôi vượt qua trong, vì vậy nó trông như thế này:

http://server/path/something.aspx/info1/info2/info3.xml

Các thỏa thuận máy chủ với OK này (và tôi không sử dụng các thông số chuỗi truy vấn để làm việc xung quanh một số mã khác mà tôi không viết). Nhưng khi tôi gọi Server.MapPath (Request.Url.ToString()) tôi nhận được một lỗi rằng URL đầy đủ với các phân đoạn 'thông tin' không phải là một đường dẫn ảo hợp lệ.

+0

Đặt một breakpoint trên dòng MapPath và sau đó kiểm tra các tính chất của Request.Url. Bạn sẽ tìm thấy rất nhiều thứ hữu ích trong đó. –

+0

Sẽ làm, cảm ơn. – Bruce

Trả lời

8
+0

Người chiến thắng! Đối tượng Yêu cầu được sắp xếp kém đến mức khó nhớ tất cả các vị trí khác nhau cho nội dung. –

+0

Điều đó đã làm điều đó, cảm ơn! Dòng thực tế tôi đã kết thúc với: dịch vụ chuỗiPath = Path.GetDirectoryName (Request.PhysicalPath) + @ "\ services \"; – Bruce

10
// File path 
string absoluteSystemPath = Server.MapPath("~/relative/path.aspx"); 
// Directory path 
string dir = System.IO.Path.GetDirectoryName(absoluteSystemPath); 
// Or simply 
string dir2 = Server.MapPath("~/relative"); 
+0

điều này ngụ ý tôi biết phần 'tương đối' là gì, nhưng đó là những gì tôi đang cố tính toán. – Bruce

+0

Nhưng nó hoạt động cho tôi - vì vậy: +1 – BlaM

5

Server.MapPath là một trong những cách được sử dụng nhiều nhất để thực hiện.

string physicalPath = Server.MapPath(Request.Url); 
0

Server.MapPath(Request.AppRelativeCurrentExecutionFilePath)

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