2010-05-14 110 views
1

我正在試圖保存文件時,此異常:ASP.NET根路徑

System.Web.HttpException: The SaveAs method is configured to require a rooted path, and the path '~/Thumbs/TestDoc2//small/ImageExtractStream.bmp' is not rooted. 
at System.Web.HttpPostedFile.SaveAs(String filename) 
at System.Web.HttpPostedFileWrapper.SaveAs(String filename) 
at PitchPortal.Core.Extensions.ThumbExtensions.SaveSmallThumb(Thumb image) in C:\Users\Bich Vu\Documents\Visual Studio 2008\Projects\PitchPortal\PitchPortal.Core\Extensions\ThumbExenstions.cs:line 23 

的代碼如下:

public static void SaveSmallThumb(this Thumb image) 
    { 
     var logger = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<ILoggingService>(); 

     string savedFileName = HttpContext.Current.Server.MapPath(Path.Combine(
      image.SmallThumbFolderPath, 
      Path.GetFileName(image.PostedFile.FileName))); 
     try 
     { 
      image.PostedFile.SaveAs(savedFileName); 
     } 
     catch (Exception ex) 
     { 
      logger.Log(ex.ToString()); 
     } 
    } 

這裏有什麼問題?

回答

0

你的問題是你的路徑是農產品(可能是由於在MapPath的故障):

~/Thumbs/TestDoc2//small/ImageExtractStream.bmp 

通知TestDoc2small之間的2 //

你的結合似乎是可能導致雙斜槓的問題。

image.SmallThumbFolderPathPath.GetFileName(image.PostedFile.FileName)的輸出是什麼?

SaveAs需要物理路徑(例如,c:/Thumbs/TestDoc2//small/ImageExtractStream.bmp)。

+0

我認爲這可能是,讓我看看它 – dejavu 2010-05-14 20:19:36

0

它看起來像MapPath沒有正確映射你的路徑。您可能在smallthumbfolderpath結尾處以及image.postedfile.filename的開頭處有/,導致生成的路徑中出現雙斜槓。從其中任何一箇中刪除/,並且MapPath調用應該正常返回。

SaveAs方法需要根路徑,這意味着它以一個驅動器號開頭。在運行MapPath後確保你的路徑不是以~開頭,你應該沒問題。