2010-05-14 3 views
1

Je reçois cette exception lorsque vous essayez d'enregistrer un fichier:chemins racine 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 

Le code est ci-dessous:

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()); 
     } 
    } 

Quel est le problème ici?

Répondre

0

problème Vous est votre chemin étant produit (peut-être en raison de l'échec de MapPath):

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

avis 2 // entre TestDoc2 et small.

Vous combinez semble être le problème qui provoque probablement la double barre oblique. Quelle est la sortie de image.SmallThumbFolderPath et Path.GetFileName(image.PostedFile.FileName)? Le SaveAs nécessite un chemin physique (par exemple c:/Thumbs/TestDoc2//small/ImageExtractStream.bmp)

+0

Je pensais que ce pourrait être, laissez-moi regarder – dejavu

0

Il semble que MapPath ne mappe pas correctement votre chemin. Vous avez probablement un / à la fin de smallthumbfolderpath et au début de image.postedfile.filename, ce qui entraîne la double barre oblique dans votre chemin résultant. Supprimez le / de l'un de ces éléments et l'appel MapPath doit retourner correctement.

La méthode SaveAs attend un chemin enraciné, ce qui signifie qu'il commence par une lettre de lecteur. Assurez-vous que votre chemin ne commence pas par un ~ après avoir exécuté MapPath et que tout devrait bien se passer.

Questions connexes