2012-02-13 45 views
2

我下载从服务器上的文件的文件时,文件在同一目录展示了其他一些磁盘上没有项目是“不是虚拟路径”,错误在下载

我的控制器代码

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

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

+1

好像该文件夹IIS用户还没有得到许可。 – 2012-02-13 05:17:44

+0

如何检查IIS用户是否有权限来访问它。共享包含该文件的文件夹是强制性的吗?有关它的任何想法? – 2012-02-13 12:04:57

回答

1

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

我通常加载该文件,然后使用流的文件的结果。 使用文件(流流串的contentType,字符串文件名)的过载

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

文件存在于服务器,但不知道如何检查IIS用户是否有权限来访问它。共享包含该文件的文件夹是强制性的吗?有关它的任何想法? – 2012-02-13 12:03:45

+0

不强制共享的文件夹。但我认为至少你需要有权限阅读该文件。右键单击该文件并选择安全选项卡。将IIS_User或network_service用户添加到它,其中一个将工作。 – superwalnut 2012-02-13 23:12:09

1

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

如果你有问题或约束,你不能把它的应用程序的路径和您的应用程序可以访问文件(读),你可以阅读在你的应用程序文件,并改写它的响应。