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.

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.

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.

ASP.NET Core’da Server.MapPath Alternatif Yöntemi
5 (100%) 4 oy

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. Mehmet dedi ki:

    Çalışmalarınızı takdir ediyorum, lütfen devam edin

    • Murat ÖNER dedi ki:

      Teşekkür ederim, sizin böylesine değerli geri bildirimleriniz olduğu sürece inşallah meslek hayatım boyunca deneyimlerimi sürekli paylaşmayı düşünüyorum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.