【发布时间】:2015-10-23 20:47:35
【问题描述】:
我只是想在我的解决方案的文件夹中放置一个 pdf 文件,然后让用户在我的网站上下载它。很简单!
我有一个 .aspx 主页面,其中包含指向另一个 .aspx 页面的静态链接,我仅使用该链接来下载文件。如果我直接从 Visual Studio 中运行下载页面,则该代码有效,但是如果我运行我的主页并单击我指向此页面的那个,则它不起作用。这是下载页面的代码:
FileInfo file = new FileInfo(Server.MapPath("~/Workflow/Workflow v3.pdf"));
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/pdf";;
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.BinaryWrite((byte[])File.ReadAllBytes(Server.MapPath("~/Workflow/Workflow v3.pdf")));
Response.Flush();
Response.End();
仅供参考。这是我在工具的不同区域使用的另一个下载页面。这个页面实际上是带一个参数,并点击数据库来抓取存储在数据库中的文件。此代码确实有效,但我不想为我的“工作流程”下载页面这样做。
...
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = AgreementDocumentTable.Rows[0]["ContentType"].ToString();
Response.AppendHeader("Content-Disposition", "attachment; filename=" + AgreementDocumentTable.Rows[0]["Title"].ToString());
Response.BinaryWrite((byte[])AgreementDocumentTable.Rows[0]["AgreementDocument"]);
Response.Flush();
Response.End();
【问题讨论】:
-
你需要更清楚“不起作用”。断点会被击中吗?有例外吗?等
-
它在 Response.End(); System.Web.dll 中出现“System.Web.HttpException”类型的异常,但未在用户代码中处理附加信息:远程主机关闭了连接。错误代码为 0x80070057。
-
我了解 Response.End() 会按设计抛出异常。但仍然没有进行下载。
标签: c# asp.net file download binaryfiles