'不是虚拟路径',下载文件时出错

时间:2012-02-13 05:05:58

标签: asp.net-mvc

我正在从服务器下载文件,文件存在于与项目不在同一目录中的其他磁盘上

我的控制器代码是

public ActionResult GetFileFromDisk()
{
     string PATH = @"E:\10-FEB-2012\DIR1\DIR2";
     return File(Server.MapPath( (PATH + fileName ), type, fileName);
}

如果我不使用Server.MapPath代码工作在我的机器上,但是当我在服务器上部署应用程序时它会出错

2 个答案:

答案 0 :(得分:1)

由于它已经是物理地址,因此您无需使用mappath进行转换。 MapPath用于将虚拟路径转换为物理路径。你可以在服务器上检查你的驱动器上是否存在该文件?还要检查它可能需要IIS_User或network_service的权限。

我通常加载文件然后使用stream作为File结果。 使用File(Stream stream,string contentType,string fileName)

的重载
FileInfo info = new FileInfo(packageItem.PhysicalPath);
                if (info.Exists)
                {
                    return File(info.OpenRead(), System.Net.Mime.MediaTypeNames.Application.Octet, info.Name);
                }

答案 1 :(得分:1)

为了能够下载文件,需要在网站上提供文件位置。即使您当前的应用程序中没有该文件,也必须在其他应用程序上提供该文件。否则你无法下载它。

如果您遇到问题或约束,无法将其放入应用程序路径并且您的应用程序可以访问该文件(读取),您可以在应用程序中读取该文件并在响应中重写该文件。

相关问题