Asp.net mvc 3 使用ASP MVC3下载文件时出错

Asp.net mvc 3 使用ASP MVC3下载文件时出错,asp.net-mvc-3,download,Asp.net Mvc 3,Download,这段代码应该使用mvc3控制器下载一个文件 public FilePathResult GetFileFromDisk(String file) { String path = AppDomain.CurrentDomain.BaseDirectory + "AppData/"; String contentType = "text/plain"; return File(path+file, contentType, file); } 视图部分: @Html.A

这段代码应该使用mvc3控制器下载一个文件

public FilePathResult GetFileFromDisk(String file)
{
     String path = AppDomain.CurrentDomain.BaseDirectory + "AppData/";
     String contentType = "text/plain";
     return File(path+file, contentType, file);
}
视图部分:

@Html.ActionLink("Download", "GetFileFromDisk","Upload", new { file = "textfile" },null);
但是当我点击链接时,我得到了这个错误

找不到路径“D:\Project\FileUploadDownload\FileUploadDownload\AppData\textfile”的一部分。

[DirectoryNotFoundException:找不到路径“D:\Project\FileUploadDownload\FileUploadDownload\AppData\textfile”的一部分。]

为什么foldername在文件路径中重复?请提供一个解决方案…

尝试如下:

public ActionResult GetFileFromDisk(string file)
{
    var appData = Server.MapPath("~/App_Data");
    var path = Path.Combine(appData, file);
    path = Path.GetFullPath(path);
    if (!path.StartsWith(appData))
    {
        // Ensure that we are serving file only inside the App_Data folder
        // and block requests outside like "../web.config"
        throw new HttpException(403, "Forbidden");
    }

    if (!System.IO.File.Exists(path))
    {
        return HttpNotFound();
    }

    var contentType = "text/plain";
    return File(path, contentType, Path.GetFileName(path));
}