日期:2014-05-18  浏览次数:20513 次

烦死了:路径无效。应为虚拟路径???
错误提示如下:
MapPath“I:\raqi\productpicmin\1\Waterlilies_m.jpg”的路径无效。应为虚拟路径。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.ArgumentException:   MapPath“I:\raqi\productpicmin\1\Waterlilies_m.jpg”的路径无效。应为虚拟路径。

源错误:  


行   335: dire0.Create();
行   336: }
行   337: bt.Save(Server.MapPath(@ "I:\raqi\productpicmin\1\Waterlilies_m.jpg "),ici,ep);
行   338: }
行   339: }
 


但我这个路径是没有问题的啊

foreach   (FileInfo   f   in   d.GetFiles())
{
if(f.Name.Substring(f.Name.LastIndexOf( ". ")+1)   ==   "jpg ")
{
string   dire   =   f.DirectoryName;
string   imgUrl   =   dire   +   @ "\ "+f.Name;
System.Drawing.Image   oldImg   =   System.Drawing.Image.FromFile(f.FullName);

System.Drawing.Image   newImg   =   oldImg.GetThumbnailImage(120,   120,   new   System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback),   IntPtr.Zero);

Bitmap   bt   =   new   Bitmap(newImg);

//   ===处理JPG质量的函数===
ImageCodecInfo[]   codecs   =   ImageCodecInfo.GetImageEncoders();
ImageCodecInfo   ici   =   null;
foreach   (ImageCodecInfo   codec   in   codecs)
{
    if   (codec.MimeType   ==   "image/jpeg ")
    {
      ici   =   codec;
    }
}
EncoderParameters   ep   =   new   EncoderParameters();
ep.Param[0]   =   new   EncoderParameter(System.Drawing.Imaging.Encoder.Quality,   (long)90);

string   filename   =   imgUrl.Substring(imgUrl.LastIndexOf(@ "/ ")+1).Substring(0,(imgUrl.Substring(imgUrl.LastIndexOf(@ "/ ")+1).LastIndexOf( ". ")));
filename   =   filename.Substring(filename.LastIndexOf(@ "\ ")+1);
string   newfile   =   imgUrl.Replace( "productpic ", "productpicmin ").Replace(filename,filename+ "_m ");
string   dirctoryurl   =   newfile.Substring(0,newfile.LastIndexOf(@ "\ ")+1);
DirectoryInfo   dire0   =   new   DirectoryInfo(dirctoryurl);
if(!dire0.Exists)
{
  dire0.Create();
}

bt.Save(Server.MapPath(newfile)   ,ici,ep);
}
}


大家帮忙看看,被这个问题烦死了

------解决方案--------------------
相对你当前路径用 "/ ", "../ "这样就行了,不要用Server.MapPath()方法
------解决方案--------------------
虚拟路径和网页路径是用/的
本地硬盘是用\的

像你这个,路径应该类似于
Server.MapPath( "roductpicmin/Waterlilies_m.jpg "),

最终返回值类似于
http://localhost/raqi/roductpicmin/Waterlilies_m.jpg
------解决方案--------------------
楼上2位正解