2010-05-14 121 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后确保你的路径不是以~开头,你应该没问题。