不允许从App_Data文件夹加载本地资源

时间:2015-10-25 17:32:54

标签: c# asp.net-mvc

我需要为更大量的Pdf提供服务,这些Pdf需要授权才能下载。

我已经读过,建议将它们放在App_Data文件夹中。

我在App_Data文件夹中创建了三个文件夹:

> SetOne

> SetTwo

> SetThree

我需要将这些文件传递给我的视图。

控制器

var files = Directory.EnumerateFiles(Server.MapPath("~/App_Data/SetOne"));

return View(files);

查看

<ul>
    @foreach (var fullPath in Model)
    {
        var fileName = Path.GetFileName(fullPath);
        var downloadPath = @Path.GetDirectoryName(fullPath) + "\\" + @fileName;
        <li><a href="@downloadPath">@fileName</a></li>
    }
</ul>

使用上面的代码,我能够在无序列表中列出SetOne文件夹的内容,但是当我尝试查看其中一个Pdf时,我看到了:

  

不允许加载本地资源:   文件:/// B:/Development/MyProject/MyProject.Web/App_Data/SetOne/sampleOne.pdf

如何允许应用程序访问这些文件?

修改

我还尝试创建一个名为Pdfs的新文件夹并将文档移动到此文件夹,但是当我在chrome dev工具中查看时,我收到相同的错误消息。

我是否需要为此任务实现Http Handler?

1 个答案:

答案 0 :(得分:1)

您的方法适用于WinForms应用程序,但不适用于Web。 downloadPath应包含Url但不包含文件上的物理路径(如some.com/pdfs/1.pdf)

您可以在此案例中使用Server.MapPath