2015-09-17 15 views
11

ASP.NET MVC 6 web sitesini Git'ten Azure'a dağıttım. Dağıtımın ayrıntıları this blog post'da bulunabilir, ancak temel olarak bunu yayınlamak için DNU kullanıyorum ve daha sonra bir Azure web sitesine yönlendirmek için kudu kullanıyorum.Hem üretim hem de geliştirme ortamında ASP.NET 5 DNX projesi için uygulama taban yolunun tutarlı bir şekilde nasıl edinilir?

IHostingEnvironment Kullanarak ApplicationBasePath'i elde ediyorum. Sorun şu ki geri döndüğüm yollar, localhost ve Azure'da çok farklı.

Azure: "D: \ ev \ sitesi \ AppRoot \ src \ src"
Localhost: "C: \ Users \ deebo \ Source \ sitem \ sitesi \ src"

Ben tabanını kullanmak istiyorum yol bazı görüntüler içeren bir klasöre tam yolunu almak için: wwwroot/img/galeri/

aşağıdaki kod ile bu sorunu var:

var rootPath = _appEnvironment.ApplicationBasePath; 

var pathFix = "../../../"; 
if(_hostingEnvironment.IsDevelopment()) 
{ 
    pathFix = string.Empty; 
} 
var imagesPath = Path.Combine(rootPath, pathFix, "wwwroot", "img", "gallery"); 

Bu işe ancak hacky görünüyor olabilir.

Dağıtım yöntemimin buna etki etmesi mümkün mü?
Uygulama yolunu almanın daha tutarlı bir yolu var mı?

+0

Uygulama yolu ile ne yapmak istersiniz? Uygulamanızı nasıl etkiler? –

+0

Bazı görüntüleri içeren bir klasörün tam yolunu almak için temel yolu kullanmak istiyorum: wwwroot/img/gallery. Bunu soruya ekledim. Yol ayrıca kodda da görülebilir. Soruyu netleştirmem için yardım ettiğin için teşekkürler –

cevap

19

IHostingEnvironment.WebRootPath'u kullanabilirsiniz. Asp 5 deep dive Gönderen:

IHostingEnvironment hizmetler Web kökü de uygulama (genellikle www klasörü) ve Web kök yoluna bir IFileProvider soyutlama erişim sağlar.

Yani wwwroot yolunu alabilirsiniz hatta doğrudan bir yol haritası:

var wwwrootPath = env.WebRootPath; 
var imagesPath = hostingEnv.MapPath("img/gallery"); 

PS. Bunu yerel olarak denedim, Azure'a değil. Ancak, Azure'daki sorunlar hakkında hiçbir şey bulamadım. This answer, Azure IHostingEnvironment.WebRootPath öğesinin, D:/Home/site/wwwroot'a işaret edeceğinden bile bahseder.

+0

Teşekkürler Bu tam olarak aradığım şeydi. Windows ve Mac localhost yanı sıra Azure üzerinde çalıştı. –

+0

İyi ve her ortamda çalıştığını bilmek harika! –

+4

Harika bilgi; (en azından ASP.NET Çekirdek 1.0.0-RC2'den itibaren), denetleyicinin yapıcısını bu tür bir parametre ile bildirerek herhangi bir denetleyiciden bir "IHostingEnvironment" örneğine bir başvuru alabilirsiniz; örneğin 'kamu HomeController (IHostingEnvironment env) {...' – mklement0

İlgili konular