C# 在MVC4 Razor应用程序中,在内部驱动器上创建物理文件的下载链接

C# 在MVC4 Razor应用程序中,在内部驱动器上创建物理文件的下载链接,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,我尝试在MVC4应用程序中执行此操作: @foreach (var item in Model) { <tr> <td><a href="@item.DownloadUrl">Download Document</a></td> </tr> } 谢谢。您确实需要使用Server.MapPath链接到服务器上的远程文件。您现在正在做的是链接到客户端机器上的物理文件 HttpContext.Cu

我尝试在MVC4应用程序中执行此操作:

@foreach (var item in Model)
{
    <tr>
        <td><a href="@item.DownloadUrl">Download Document</a></td>
    </tr>
}

谢谢。

您确实需要使用
Server.MapPath
链接到服务器上的远程文件。您现在正在做的是链接到客户端机器上的物理文件

HttpContext.Current.Server.MapPath(Path.Combine(DocumentsLocation, Reader["Id"] + ".pdf"));

这就是我最终解决问题的原因:

byte[] fileBytes = System.IO.File.ReadAllBytes(System.IO.Path.Combine(DocumentsLocation, name + ".pdf"));
string fileName = name + ".pdf";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);

感谢所有贡献者。

您使用哪种浏览器?尝试使用其他扩展名库下载该文件,但Server.MapPath不接受物理路径,这就是为什么它不起作用。Server.MapPath实际上与问题的要求相反,并将相对URL映射到服务器上的物理位置
byte[] fileBytes = System.IO.File.ReadAllBytes(System.IO.Path.Combine(DocumentsLocation, name + ".pdf"));
string fileName = name + ".pdf";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);