2011-07-06 17 views
6

E-posta adı verilen bir alt klasöre sahip bir ASP.NET MVC projem var. Bu, e-posta şablonum için HTM dosyalarını içerir. Sitede belirli noktalarda, bu şablonlardan birini yüklemesi ve bir e-posta olarak göndermesi gereken bir denetleyicim var.Dosya sistemindeki ASP.NET MVC sitesinin yolunu alın

Yapmaya çalıştığım şey, geçerli yürütme derlemesinin yolunu bulmak için yansıma kullanmaktır, ancak beklediğim gibi çalışmıyor. yol geri is alıyorum:

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

'C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 Geçici ASP.NET \ \ ssl \ 1da130c4 \ f8e7810e \ montaj \ dl3 \ iles 5f253aca \ 1a71f123_e83bcc01 \ e-postalar \ ProductAccountConfirmation.htm'

Ben site olarak bu garip Visual Studio üzerinden IIS içinde barındırılan bulabilirsiniz. Bunun, proje dizinimdeki proje dizininde ve üretimde IIS için dağıtım klasöründe yer alacağını düşündüm.

cevap

9

Aradığın, Server.MapPath() olup, yürütmekte olduğunuz uygulamanın yolunu size verecektir.

1

ASP.Net ile, derlemelerin bir kopyası yapılır ve çalışma zamanında kullanılan kopyadır. Proje klasöründeki dosyalarınız sadece şablonlardır.

Bu belge için hangi dizine ihtiyacınız var? Amaçlarınıza ulaşmak için alternatif bir yol olabilir.

1

Sen ile uygulamanın kök yolunu alabilirsiniz:

@HostingEnvironment.ApplicationPhysicalPath 
4

Öyleyse size e-postalar alt klasöründe template1.html adlı bir dosya var diyelim. Bu kod size bu HTML dosyasının tam yolunu vermelidir. Bir yayına cevap zaman

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

, bir açıklama veya ayrıntılı bağlantı ekleyin. – AFract

+0

Sadece mükemmel, hatta IIS altında alt siteler için çalışır. –