C# 错误:";找不到路径的一部分“;

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

我对在ASP.NET中开发网站很陌生,或者只是一般的网站

我已经编写了一个网站,它在Localhost上运行得非常好,但是当我把它放到网上时,当我试图上传一个文件时会出现这个错误

代码:

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);
然后查看文件夹已经存在的路径。正如我所说的,当我在本地主机上运行网站时,我可以毫无问题地上传。当我尝试从在线网站上传文件时,会出现问题。但是文件夹也在那里。