ASP.NET Core’da Server.MapPath Alternatif Yöntemi

Asp.Net’de standart olarak HttpContext sınıfının üyesi Server özelliğinin metodu olan MapPath metoduna alternatif olarak Asp.Net Core’da nasıl bir yöntem ile kullanabileceğimizi göreceğiz.

aspnetcore

Bu makaleyi yazma sebebim Asp.Net Core projesi oluşturduğunuzda benim gibi projenin dizinine erişmek için HttpContext sınıfı altında yer alan Server özelliğini arayacaksınız fakat böyle bir özellik maalesefki asp.net core’da yok farklı bir yol ile bu ihtiyacı karşılayacağız. Asp.Net Core’un en sevdiğim özelliklerinden olan Contructor Dependency Injection metodu ile ContentRootPath özelliği ve diğer birçok özelliğe erişebileceğiz Dependency Injection için IHostingEnvironment arayüzünü kullanacağız.

Şimdi bir senaryo üzerinden gidelim Download adında bir metodumuz olduğunu varsayalım ve download metoduna fileId diye dosya numarası gönderiliyor bizde fiziksel download yolumuzdan bu fileId var ise indirtelim.

Şimdi IHostingEnvironment arayüzü ile Constructor Dependency Injection yöntemi ile nasıl elde edeceğimizi ve nasıl bir çıktı aldığımızı görelim.

IHostingEnvironment arayüzünden bizlere şöyle bir çıktı verilmiş oldu.

IHostingEnvironment

Gördüğünüz gibi kullanabileceğimiz bize path sunan 2 özellik olduğunu görüyoruz. ContentRoot tam olarak proje ana dizinini veriyor fakat WebRootPath wwwroot dizinini veriyor biz Download klasörünü ana dizinde sakladığımız için ContentRootPath adlı özelliği kullanıyoruz.

Builder Design Pattern kullanılarak oluşturulmuş olan ve genellikle yeni Asp.net Core projesi oluşturduğunuzda Program.cs yada Startup.cs içerisinde WebHostBuilder sınıfı kullanılarak projenin belli başlı özellikleri ayarlanarak ayağa kaldırılır ve UseContentRoot adında bir metodunun olduğunu göreceksiniz bu metod ile ContentRootPath’deki yolu kendinize göre kişiselleştirebilirsiniz.

5/5 - (5 votes)

Murat Öner sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya devam et