我非常擅长在ASP.NET中开发网站,或者只是开发网站。
我编写了一个网站,在Localhost上工作得非常好,但是当我把它放到网上时,我在尝试上传文件时遇到了这个错误。
代码:
FileUpload_Billede.SaveAs(Server.MapPath("~/img/upload/") + FileUpload_Billede.FileName);
MakeThumb(FileUpload_Billede.FileName, "img/upload/", 295, "/img/sponsor/");
我已将另一个网站放在同一个网站上,我也使用了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();
}
答案 0 :(得分:0)
尝试在主网站文件夹中添加DMS文件夹,然后从属性更改权限以使每个人都可以在此文件夹上读/写
答案 1 :(得分:0)
您必须确保服务器上存在img / upload文件夹,并且该文件夹应该可以访问。
答案 2 :(得分:0)
确切地检查错误的位置并缩小到那 - 我们不需要完全实现MakeThumb,只需要错误的位置。
文件夹可能存在,但您应用程序的应用程序池的标识可能无法访问。
检查两个文件夹(提及的一些评论"文件夹"但拇指被保存到另一个文件夹。
如果可能,使用Debug(而不是Release)部署以获取行号,如果没有,则添加一些日志记录(例如log4net)或跟踪并添加路径的详细信息。
在尝试保存之前使用System.IO.Directory.Exists()
它可能是.SaveAs
,FromFile
,Thumb.Save
中的一个 - 您也可以为每个实现使用不同的实现。
作为额外内容:始终使用Path.System.IO.Path.Combine()
,因此无法额外//
可能导致问题