C# 错误:";找不到路径的一部分“;
我对在ASP.NET中开发网站很陌生,或者只是一般的网站 我已经编写了一个网站,它在Localhost上运行得非常好,但是当我把它放到网上时,当我试图上传一个文件时会出现这个错误 代码:C# 错误:";找不到路径的一部分“;,c#,asp.net,iis,C#,Asp.net,Iis,我对在ASP.NET中开发网站很陌生,或者只是一般的网站 我已经编写了一个网站,它在Localhost上运行得非常好,但是当我把它放到网上时,当我试图上传一个文件时会出现这个错误 代码: FileUpload_Billede.SaveAs(Server.MapPath("~/img/upload/") + FileUpload_Billede.FileName); MakeThumb(FileUpload_Billede.FileName, "img/upload/", 295, "/img/s
FileUpload_Billede.SaveAs(Server.MapPath("~/img/upload/") + FileUpload_Billede.FileName);
MakeThumb(FileUpload_Billede.FileName, "img/upload/", 295, "/img/sponsor/");
我已经在同一个webhotel上建立了另一个网站,在那里我也使用了FileUpload,但没有出现任何错误
我在网上读到很多文章,说是IIS造成了这个问题。我以前从未接触过IIS,这就是为什么我不明白为什么现在会出现问题?在这种情况下,我不知道在IIS管理器程序中要做什么。我希望有人能帮我,因为我完全迷路了
如果您需要更多信息,请告诉我
编辑:我被要求编写MakeThumb方法的定义。这是:
private void MakeThumb(string Filename, string UploadFolder, int bredde, string thumbuploadfolder)
{
// Kompliceret Kode fundet fra nettet om upload og skalering af billede.
// find det uploadede image
System.Drawing.Image OriginalImg = System.Drawing.Image.FromFile(Server.MapPath("~/") + UploadFolder + Filename);
// find højde og bredde på image
int originalWidth = OriginalImg.Width;
int originalHeight = OriginalImg.Height;
// bestem den nye bredde på det thumbnail som skal laves
int newWidth = bredde;
// beregn den nye højde på thumbnailbilledet
double ratio = newWidth / (double)originalWidth;
int newHeight = Convert.ToInt32(ratio * originalHeight);
Bitmap Thumb = new Bitmap(newWidth, newHeight, PixelFormat.Format24bppRgb);
Thumb.SetResolution(OriginalImg.HorizontalResolution, OriginalImg.VerticalResolution);
// Hvis billedet indeholder nogen form for transperans
//(mere eller mindre gennemsigtig, eller en gennemsigtig baggrund) bliver det gjort her
Thumb.MakeTransparent();
// opret det nye billede
Graphics ThumbMaker = Graphics.FromImage(Thumb);
ThumbMaker.InterpolationMode = InterpolationMode.HighQualityBicubic;
ThumbMaker.DrawImage(OriginalImg,
new Rectangle(0, 0, newWidth, newHeight),
new Rectangle(0, 0, originalWidth, originalHeight),
GraphicsUnit.Pixel);
// encoding
ImageCodecInfo encoder;
string fileExt = System.IO.Path.GetExtension(Filename);
switch (fileExt)
{
case ".png":
encoder = GetEncoderInfo("image/png");
break;
case ".gif":
encoder = GetEncoderInfo("image/gif");
break;
default:
// default til JPG
encoder = GetEncoderInfo("image/jpeg");
break;
}
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L);
// gem thumbnail i mappen /Images/Uploads/Thumbs/
Thumb.Save(Server.MapPath("~") + thumbuploadfolder + Filename, encoder, encoderParameters);
// Fjern originalbilledet, thumbnail mm, fra computerhukommelsen
OriginalImg.Dispose();
ThumbMaker.Dispose();
Thumb.Dispose();
}
尝试在主网站文件夹中添加DMS文件夹,然后从属性更改权限,使每个人都可以读取/写入此文件夹您必须确保您的服务器上存在img/upload文件夹,并且应该可以访问该文件夹。检查错误的确切位置,并缩小范围-我们不需要完全实现MakeTumb,只需要错误所在的位置 文件夹可能存在,但应用程序的应用程序池标识可能无法访问 检查两个文件夹(有些评论提到“文件夹”,但拇指被保存到另一个文件夹 如果可能,使用Debug(而不是Release)进行部署以获取行号,如果不行,则添加一些日志记录(例如log4net)或跟踪,并添加路径的详细信息 在尝试保存之前,请使用
System.IO.Directory.Exists()
它可能是.SaveAs
、FromFile
、Thumb.Save
中的一种,而且您对每种方法都使用不同的实现
作为额外的:始终使用
Path.System.IO.Path.Combine()
,因此不可能出现额外的/
,这会导致问题请发布SaveAs和MakeThumb函数定义。SaveAs是默认定义的,不是我定义的。我发布了MakeThumb的定义。在文件上载\u Billede.SaveAs(Server.MapPath)上放置一个断点(“~/img/upload/”)+FileUpload_bilede.FileName);
然后查看文件夹已经存在的路径。正如我所说的,当我在本地主机上运行网站时,我可以毫无问题地上传。当我尝试从在线网站上传文件时,会出现问题。但是文件夹也在那里。