asp.net-mvc - 如何使用 ASP.NET MVC 1.0 直接从文件系统提供文件?

标签 asp.net-mvc

我有一个在 Windows Server 2003 IIS 6.0 上运行的 ASP.NET MVC 1.0 应用程序。

我刚刚添加了一个新功能,允许用户将文件上传到服务器。我还添加了一个页面,显示该用户上传的文件列表。

问题是当有人点击查看文件时,我收到以下错误:
该系统找不到指定的文件。

我已经验证一切都是正确的,我无法在我的生活中弄清楚这一点。

我将此代码添加到路由部分认为可能与它有关,但它没有帮助。

routes.RouteExistingFiles = false;
routes.IgnoreRoute("App_Data/Uploads/{*pathInfo}");

任何帮助将不胜感激。

最佳答案

文件存储在 App_Data客户端不能直接访问文件夹。 ASP.NET 阻止访问它。所以不需要为这个特殊文件夹添加任何忽略路由,你不能使用这样的 url /App_Data/Uploads/foo.txt .如果你想从这个文件夹中提供文件,你需要编写一个 Controller Action 将从物理位置读取文件并将其返回给客户端:

public ActionResult Download(string id)
{
    // use the id and read the corresponding file from it's physical location
    // and then return it: 
    return File(physicalLocation, mimeType);
}

然后使用:
<%= Html.ActionLink("download report", "download", new { id = 123 }) %>

关于asp.net-mvc - 如何使用 ASP.NET MVC 1.0 直接从文件系统提供文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278764/

相关文章:

c# - ASP.NET MVC UpdateModel 意外失败

asp.net-mvc - ASP.NET MVC session 、全局和缓存

asp.net-mvc - 部署 Web 应用程序时出错 "Could not open Source file: Could not find a part of the path"

asp.net-mvc - 未经验证的 IValueProvider.GetValue

asp.net - RenderAction 在当前区域的当前 Controller 中找不到操作方法

asp.net-mvc - 在自定义HTML帮助器中调用Html.ActionLink

asp.net - 当文件位于不同的服务器上而不先将其下载到我的服务器上时,使用 ASP.Net MVC 在浏览器中强制下载文件

c# - 将 Web API 用于 Windows 服务以通过轮询接收命令和执行任务?

css - 为什么 Html.TextBoxFor 没有覆盖 Asp.Net MVC 中的所有页面?

java - Spring MVC - 不支持请求方法post