Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

“The SaveAs Method İs Configured To Require A Rooted Path, And The Path ‘…’ İs Not Rooted” Hatası ve Çözümü

Web yazılımlarında site üzerinden FTP’ye, Server’a ya da Hosting’e(hepside aynı kapıya çıkar) dosya yükleme işleminde

The SaveAs method is configured to require a rooted path, and the path ‘..’ is not rooted.

hatası alıyorsanız eğer mantıksal olarak yaptığınız hatanın farkında değilsiniz demektir.Aslında alınan bu hata teknik olarak mantıksal değil, fiziksel bir yapıya sahiptir.
Mevzuya girmeden önce hatanın görsel halinide aşağıda paylaşmakta fayda var.
HttpException
Hatayı netleştirebilmek için bir site üzerinden Hosting’e resim yüklendiğini varsayalım.
Üç aşağı beş yukarı kodlarınız aşağıdaki gibi olacaktır.

.
.
.
                FileUpload.SaveAs("~/Content/Resimler/"+ DosyaAdi);
.
.
.

Bu tarz bir kodda bizim açımızdan mantıksal, mimarisel açıdan fiziksel olan hataya değinirsek eğer, dosyanın kaydedileceği uzantının yolunu tam olarak vermememizden kaynaklanmaktadır.Yazılım bu dosyayı kaydetmek için verilen dizini arayacak ama “Content” isimli kök bir klasör bulamayacağı için hata verecektir.

Bizim burada yapmamız gereken Server’a atılacak olan dosyanın, gideceği dizinin fiziksel adresini tam olarak vermektir.Biz her Server’ın fiziksel yol uzantısını net bilemeyeceğimiz için mimarinin bizlere sunduğu “Server” sınıfından yararlanabiliriz.Kökeni Asp diline dayanan bu sınıf, Asp.NET mimarisine de geçiş yapmıştır.

Mimarinin bizlere sunduğu “Server” sınıfı sayesinde biz web yazılımımızın çalışacağı Server’da rahatça işlem yapabiliriz.”Server” sınıfında bulunan “MapPath(Yol Belirleme)” metodu ile web sitemizin çalıştığı Server’da ki yollarımızı kesin olarak belirleyebileceğimiz için Server’ın bu yolu hangi kök dizinde tuttuğuyla ilginenmemize gerek kalmayacaktır.İster “C://A/B/C/…/Content/Resimler/” dizinine benzer bir yol olsun, isterse de “H://Ahmet/Mehemt/Necati/…/Content/Resimler/” dizinine benzer yol olsun uygun dizinlerde çalışmak için onca zahmetten kurtarmaktadır.

“Server” sınıfındaki “MapPath” metodunun kullanım şekli aşağıdaki prototipten görebilirsiniz.

Server.MapPath("")

Şimdi yukarıdaki kod bloğuna benzer kodunuzu aşağıdakine benzer bir biçimde düzenleyiniz.

.
.
.
                FileUpload.SaveAs(Server.MapPath("~/Content/Resimler/"+ DosyaAdi));
.
.
.

Evet bu şekilde küçük bir düzenlemeyle bu hatadan kurtulmuş oluyoruz. 🙂

İyi çalışmalar dilerim…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

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

*