2009-08-29 6 views
7

SaveAs yöntemi, köklü bir yol ve '~ \ images \ yolunu gerektirecek şekilde yapılandırılmıştır. 594083964.jpg 'köklü değil. Açıklama: Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluştu. Hata hakkında ve kodda nereden kaynaklandığı hakkında daha fazla bilgi için yığın izlemesini gözden geçirin.SaveAs yöntemi, köklü bir yol gerektirecek şekilde yapılandırılmış ve '~ \ images \ 594083964.jpg' yolunun köklenmemiş olduğu

durum ayrıntıları:

System.Web.HttpException: The SaveAs method is configured to require a rooted path, and the path '~\images\594083964.jpg' is not rooted.

Kaynak hatası:

Line 27:  { 
Line 28: 
Line 29:   fu1.SaveAs(@"~\\images\\" + i + fu1.FileName.Substring(fu1.FileName.Length - 4, 4)); 
Line 30: path = "~\\images\\"+i + fu1.FileName.Substring(fu1.FileName.Length-4,4); 
Line 31: } 

Kaynak Dosya: e: \ Ravi'yi \ yeni verileri \ İNSANLAR \ WebSite1 \ Hattı signup.aspx.cs: 29

+0

Ve sorudur (Path.GetExtension (string) 3 karakter çok olmayan dosya uzantılarını idare edecek)? – hirschhornsalz

+10

Sanırım hatayı istemediğini varsayabilirsiniz;) – MPritchard

cevap

21

Kaydetmekte olduğunuz yol göreli bir URL'dir. Yerel bir dosya yoluna (veya tam bir ağ yoluna) kaydetmeniz gerekir.

Dene:

string relativePath = @"~\images\"+ i + Path.GetExtension(fu1.FileName); 
fu1.SaveAs(Server.MapPath(relativePath)); 

+0

Göreceli yolda/kullanmalısınız, ancak \. – Guffa

+0

@Guffa Bunun herhangi bir fark yarattığından emin misiniz? – MPritchard

+1

Yöntem, yanlış ayırıcıları doğru olanlara dönüştürmek için yeterince iyi olabilir, ancak bunun yerine doğru ayırıcıları kolayca kullanabileceğiniz zaman bu davranışa güvenmek için bir neden yoktur (bu değişebilir). – Guffa