2012-11-08 30 views
6

Tôi có một ứng dụng .NET mà tôi đang cố gắng gỡ lỗi và một phần ứng dụng của tôi tải một tệp từ dự án của tôi. Tập tin này được đặt tạiNhận đường dẫn đầy đủ để nộp trong khi gỡ lỗi bằng IIS Express

C:\Users\USER_FOLDER\Documents\Visual Studio 2012\Projects\MY_PROJECT\_templates\myFile.html 

Trong mã của tôi, tôi chỉ định một đường dẫn tương đối đến tập tin và sử dụng lớp DirectoryInfo để có được đường dẫn thư mục đầy đủ hồ sơ của tôi:

string myFile = (new DirectoryInfo("_templates/myFile.html")).FullName; 

Tuy nhiên, lợi nhuận này con đường sau đây (thêm các ký tự thoát):

"C:\\Program Files\\IIS Express\\_templates\\myFile.html" 

Tôi đã mong đợi đường dẫn được trả về khi gỡ lỗi trong IIS Express khớp với đường dẫn đầu tiên tôi liệt kê, chứ không phải đường dẫn thứ ba. Tại sao điều này? Có cái gì khác mà tôi cần phải thiết lập trong dự án của tôi để có nó lấy được những con đường đúng cách? Tôi giả định rằng điều này sẽ không xảy ra nếu tôi triển khai mã của tôi đến một trang web IIS7, nhưng tôi vẫn chưa đạt được cấp độ thử nghiệm đó.

+0

Nếu trở về của nó 'Program Files \\ IIS nhanh \\' nó có nghĩa là tung ra của nó từ đó đường dẫn thư mục để cụ thể hơn về đường dẫn thư mục. Xem xét '" _templates/myFile.html "sẽ là một thư mục cục bộ trong thư mục cha của nó không phải là rất cụ thể. –

+0

Trên ghi chú đó, hãy gọi Server.MapPath trả lại đường dẫn chính xác mà không cần phải mô tả chi tiết hơn. Đi sâu vào điều này, tôi không nghĩ mình phải miêu tả nhiều hơn bởi vì trong các ngôn ngữ khác, tôi đã xử lý đường dẫn vì nó liên quan đến vị trí của tập lệnh được tham khảo tập tin, nhưng để đọc nội dung của nó. Máy chủ NET cần một URI đủ điều kiện cho đường dẫn và tôi chỉ sử dụng Object sai để lấy được nó. Tại sao câu hỏi _valid_ của tôi bị bỏ phiếu là gây bối rối. –

Trả lời

5

Sử dụng Server.MapPath:

Server.MapPath("~/_templates/myFile.html") 

hoặc HttpServerUtility.MapPath:

HttpServerUtility.MapPath("~/_templates/myFile.html") 
+0

Cảm ơn! Server.MapPath đã làm việc cho tôi, nhưng tôi không thể nhận HttpServerUtility.MapPath để làm việc. Đối với HttpServerUtility nó tiếp tục phàn nàn rằng 'Một tham chiếu đối tượng là cần thiết cho các lĩnh vực không tĩnh, phương pháp, hoặc tài sản 'System.Web.HttpServerUtility.MapPath (string)'' Tôi đã thử nhiều cách khác nhau để viết nó và không có gì làm việc, vì vậy tôi ' sẽ chỉ sử dụng Server.MapPath. Cảm ơn một lần nữa. –

+0

Không chắc chắn nếu điều này là chính xác tình hình tương tự nhưng tôi đã có cùng một vấn đề tham chiếu đối tượng. Tôi đã giải quyết nó bằng cách sử dụng HttpContext. Như trong - HttpContext.Current.Server.MapPath(); –

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