2010-05-14 2 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 

Обратите внимание на 2 // между TestDoc2 и small.

Вы комбинируете, кажется, проблему, которая, вероятно, вызывает двойную косую черту.

Каков выходной сигнал image.SmallThumbFolderPath и Path.GetFileName(image.PostedFile.FileName)?

SaveAs требует физического пути (например, c:/Thumbs/TestDoc2//small/ImageExtractStream.bmp).

+0

Я думал, что это возможно, позвольте мне посмотреть на него – dejavu

0

Похоже, что MapPath неправильно отображает ваш путь. Вероятно, у вас есть / в конце маленького пути для папок и в начале образа image.postedfile.filename, что приводит к двойному слэшу в результирующем пути. Удалите / из одного из них, и вызов MapPath должен возвратиться должным образом.

Метод SaveAs ожидает корневой путь, что означает, что он начинается с буквы диска. Убедитесь, что ваш путь не начинается с ~ после запуска MapPath, и все должно быть в порядке.

Смежные вопросы