2011-07-06 27 views
6

Tôi đã dự án ASP.NET MVC có thư mục con được gọi là email. Điều này chứa các tệp HTM cho các mẫu email của tôi. Tại một số điểm nhất định trong trang web, tôi có một bộ điều khiển cần tải một trong các mẫu này và gửi nó dưới dạng email.Nhận đường dẫn của trang ASP.NET MVC trong hệ thống tệp

Những gì tôi đang cố gắng làm là sử dụng sự phản chiếu để có được đường dẫn của hội đồng thi hành hiện tại nhưng nó không hoạt động như tôi mong đợi. Đường dẫn Tôi nhận được lại là:

var directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

'C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Iles \ ssl \ 1da130c4 \ f8e7810e \ lắp ráp \ DL3 \ 5f253aca \ 1a71f123_e83bcc01 \ Email \ ProductAccountConfirmation.htm '

Tôi thấy điều này lạ khi trang này đang được lưu trữ trong IIS thông qua Visual Studio. Tôi đã nghĩ rằng điều này sẽ cho tôi vị trí dll trong thư mục dự án của tôi trong dev và thư mục triển khai cho IIS trong sản xuất.

Trả lời

9

Điều bạn đang tìm kiếm là Server.MapPath(), nó sẽ cung cấp cho bạn đường dẫn của ứng dụng mà bạn đang thực hiện.

1

Với ASP.Net, một bản sao được tạo thành từ các hội đồng và đó là bản sao được sử dụng trong thời gian chạy. Các dll của bạn trong thư mục dự án chỉ là các mẫu.

Bạn cần thư mục này cho mục đích nào? Có thể có một cách khác để đạt được mục tiêu của bạn.

1

Bạn có thể nhận được đường dẫn gốc của ứng dụng của bạn với:

@HostingEnvironment.ApplicationPhysicalPath 
4

Vì vậy, giả sử bạn có một tập tin gọi là template1.html trong email thư mục con của bạn. Mã này sẽ cung cấp cho bạn đường dẫn đầy đủ của tệp HTML đó.

HttpContext.Current.Server.MapPath("/") + "\\emails\\template1.html"; 
3
AppDomain.CurrentDomain.BaseDirectory 
+0

Khi bạn trả lời bài đăng, vui lòng thêm giải thích hoặc liên kết chi tiết. – AFract

+0

Chỉ cần hoàn hảo, thậm chí làm việc cho các trang web phụ dưới IIS. –

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