Asp.NET Core – ‘Access to the path ‘X’ is denied’ Hatası ve Çözümü

Merhaba,

Asp.NET Core temelli bir proje üzerinde geliştirme yaparken dosya transfer işlemlerinde gözden kaçan basit bir durumdan dolayı almış olduğum bir hata üzerine siz değerli okuyucularımın ve keza şahsen benim aynı olası hatayla tekrar karşılaşma ihtimaline nazaran hızlıca çözüme erişebilmek için hatırlatıcı unsur olması dileğiyle konuyla ilgili bloğuma bir not bırakmak istedim.

Tabi, ilgili hatayı bir tek Asp.NET Core mimarisinde değil standart Asp.NET – MVC veyahut Windows Forms vs. temelli projelerde almanızda olasıdır. Nihayetinde gözden kaçırılan durum tüm çekirdeklerde aynı refleksin verilmesine sebep olacaktır. Dolayısıyla buradaki yönlendirme .NET Core’dan daha evrensel bir çözüm sunacaktır.

Hatamıza gelirsek eğer;

Access to the path ‘X’ is denied

şeklindedir. Hatta hatamızın görsel halinide aşağıda ele alırsak eğer;
Asp.NET Core - 'Access to the path 'X' is denied' Hatası ve Çözümü

Bu hata, “FileStream” nesnesi üzerinden herhangi bir dosyayı transfer etmeye çalıştığımız zaman muhtemelen gözden kaçan bir durumdan dolayı meydana gelmektedir.
Örneğin;

        [HttpPost("[action]")]
        virtual public IActionResult Upload()
        {
            try
            {
                IFormFileCollection files = Request.Form.Files;
                files.ToList().ForEach(file =>
                {
                    if (file.Length > 0)
                        using (FileStream stream = new FileStream("D:\", FileMode.Create))
                        {
                            file.CopyTo(stream);
                        }
                });
                return Ok();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

yukarıdaki kod bloğunu ele alırsak eğer bu olası hata bizleri ağırlayacaktır.

Neden mi?

Aslında sorunun cevabı oldukça basit. “FileStream” nesnesi verilen dizinin yanında üzerinde işlem yapılacak olan dosyanın adınında belirtilmesini istemektedir. İşte sorun sadece bundan ibarettir.

        [HttpPost("[action]")]
        virtual public IActionResult Upload()
        {
            try
            {
                IFormFileCollection files = Request.Form.Files;
                files.ToList().ForEach(file =>
                {
                    if (file.Length > 0)
                        using (FileStream stream = new FileStream(Path.Combine("D:\", file.FileName), FileMode.Create))
                        {
                            file.CopyTo(stream);
                        }
                });
                return Ok();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Gerekli alanda dosya adınıda belirttiğimiz zaman uygulama sorunsuz çalışmaya devam edecektir.

İlgilenenlerin faydalanması dileğiyle…

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

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

*

Copy Protected by Chetan's WP-Copyprotect.