C# 使用SaveAs(文件上载)时DirectoryNotFoundException

C# 使用SaveAs(文件上载)时DirectoryNotFoundException,c#,asp.net-mvc,file-upload,path,C#,Asp.net Mvc,File Upload,Path,我有一个ASP.NET MVC应用程序,我想添加文件上传功能。 这是我的处理程序: private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses) { for (int i = 0; i < context.Request.Files.Count; i++) { var file = context.Request.File

我有一个ASP.NET MVC应用程序,我想添加文件上传功能。 这是我的处理程序:

private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses)
    {
        for (int i = 0; i < context.Request.Files.Count; i++)
        {
            var file = context.Request.Files[i];

            var fullPath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/App_data/UploadedFiles/")) + Path.GetFileName(file.FileName);

            file.SaveAs(fullPath);

            string fullName = Path.GetFileName(file.FileName);
            statuses.Add(new FilesStatus(fullName, file.ContentLength, fullPath));
        }
    }
private void UploadWholeFile(HttpContext上下文,列表状态)
{
for(int i=0;i
当我测试(本地)时,我总是会遇到以下错误:DirectoryNotFoundException:找不到路径的一部分

奇怪的是:测试后,我确实在UploadedFiles文件夹中找到了该文件!
那么为什么我会出现这个错误呢?

注释掉这些代码行。其中一个导致了您的错误

string fullName = Path.GetFileName(file.FileName);
statuses.Add(new FilesStatus(fullName, file.ContentLength, fullPath));
试试这个

private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses)
{
    string path = HttpContext.Current.Server.MapPath("~/App_data/UploadedFiles/");

    for (int i = 0; i < context.Request.Files.Count; i++)
    {
        var file = context.Request.Files[i];
        file.SaveAs(path + file.FileName);

        ...
    }
}
private void UploadWholeFile(HttpContext上下文,列表状态)
{
string path=HttpContext.Current.Server.MapPath(“~/App\u data/UploadedFiles/”);
for(int i=0;i
好的,我自己找到了问题所在:在选择上传文件后,表单已经提交,导致上传文件。 按下“上传”按钮后,有人试图再次上传文件


因此,错误消息试图告诉我该目录中已经有一个同名文件

哪一行代码出现异常?SaveAs不会创建新目录。所以,如果你有App_数据,但没有上传的文件,你会得到这个异常。首先检查UploadedFiles是否存在。file.SaveAs(fullPath)给出了异常,并且UploadedFiles文件夹确实存在,我甚至可以在测试后在其中找到该文件…我看不出您的代码有任何问题。因为它在我的机器上运行得很好。你能检查一下你的标记吗?另外,您是否可以在本地调试代码,并查看在什么迭代和值下会出现该错误?当我尝试您的建议时,会出现以下错误(HttpException):…/App_data/UploadedFiles/test.jpg'是一个物理路径,但应该是一个虚拟路径。