错误:"无法找到路径的一部分"

时间:2015-05-14 11:05:02

标签: 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/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();

}

3 个答案:

答案 0 :(得分:0)

尝试在主网站文件夹中添加DMS文件夹,然后从属性更改权限以使每个人都可以在此文件夹上读/写

答案 1 :(得分:0)

您必须确保服务器上存在img / upload文件夹,并且该文件夹应该可以访问。

答案 2 :(得分:0)

确切地检查错误的位置并缩小到那 - 我们不需要完全实现MakeThumb,只需要错误的位置。

文件夹可能存在,但您应用程序的应用程序池的标识可能无法访问。

检查两个文件夹(提及的一些评论"文件夹"但拇指被保存到另一个文件夹。

如果可能,使用Debug(而不是Release)部署以获取行号,如果没有,则添加一些日志记录(例如log4net)或跟踪并添加路径的详细信息。

在尝试保存之前使用System.IO.Directory.Exists()

它可能是.SaveAsFromFileThumb.Save中的一个 - 您也可以为每个实现使用不同的实现。

作为额外内容:始终使用Path.System.IO.Path.Combine(),因此无法额外//可能导致问题