2012-01-27 36 views
6

Tôi đang cố gắng mở một tệp bao gồm một số dữ liệu trong thư mục web mà C# của tôi đang chạy. Về cơ bản chỉ biến nó thành một chuỗi. Tôi đã cố gắng làm những điều sau đây ...ASP .NET C# nhận tất cả văn bản từ một tệp trong đường dẫn web

string email = File.ReadAllText("/orderforms/email_templates/file_to_include.txt"); 

Tôi không chắc chắn nếu đó là phương pháp chính xác, nhưng có vẻ như đó là một vấn đề pathing, toàn bộ đường dẫn sẽ thay đổi tùy theo những gì web máy chủ nó đang chạy trên.

Đây là thiết lập thư mục ...

/Classes/Page.ascx.cs (the page that tries to read the text from the 
file) 
/orderforms/<one of multiple pages execute the above class here or in a sub directory 
/orderforms/email_templates/file_to_include.txt 
/orderforms/email_templates/file_to_include2.txt 

đường gì và chức năng tôi nên sử dụng để đọc tất cả các nội dung của tập tin vào một chuỗi?

Cảm ơn

+1

FYI, bất cứ khi nào một url-con đường bắt đầu với một dấu gạch chéo ("/"), nó được giải thích bởi ứng dụng dưới dạng ROOT của trang web, có nghĩa là nó được đặt ngay sau tên miền để xây dựng URL đầy đủ. Điều này khác với ứng dụng gốc, được biểu thị bằng ký tự "~" trong ứng dụng asp.net (phía máy chủ). Nói chung, app-root được giống như site-root (khi không có thư mục ảo nào liên quan), nhưng cũng trong môi trường dev, thường có các thư mục ảo liên quan (khi IIS cục bộ được sử dụng), vì vậy bạn phải cẩn thận với các dấu gạch chéo hàng đầu. –

+0

Nhận xét trước đó của tôi không liên quan trực tiếp đến câu hỏi của bạn, nhưng tôi có cảm giác bạn cần biết những gì tôi đã nói. –

Trả lời

24

Hãy thử điều này:

string email = File.ReadAllText(Server.MapPath("~/orderforms/email_templates/file_to_include.txt")) 
+3

Bạn phải có HttpContext để làm điều này, để làm điều đó tôi đã phải thêm điều đó. 'string email = File.ReadAllText (System.Web.HttpContext.Current.Server.MapPath (" ~/orderforms/email_templates/file_to_include.txt "));' – ferics2

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