全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ASP.NET实现从服务器下载文件问题处理

假设在服务器的根目录下有个名为Download的文件夹,这个文件夹存放一些提供给引用程序下载的文件

 public void DownloadFile(string path, string name){
 try{
  System.IO.FileInfo file = new System.IO.FileInfo(path);
  Response.Clear();
  Response.Charset = "GB2312";
  Response.ContentEncoding = System.Text.Encoding.UTF8;
  // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
  Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
  // 添加头信息,指定文件大小,让浏览器能够显示下载进度
  Response.AddHeader("Content-Length", file.Length.ToString());
  // 指定返回的是一个不能被客户端读取的流,必须被下载
  Response.ContentType = "application/ms-excel";
  // 把文件流发送到客户端
  Response.WriteFile(file.FullName);
  // 停止页面的执行
  //Response.End(); 
HttpContext.Current.ApplicationInstance.CompleteRequest();
 }
 catch (Exception ex){
  Response.Write("<script>alert('系统出现以下错误://n" + ex.Message + "!//n请尽快与管理员联系.')</script>");
 }
 }

这个函数是下载功能的组程序,其中path是文件的绝对路径(包括文件名),name是文件名,这个程序是能够运行的.其中如果将HttpContext.Current.ApplicationInstance.CompleteRequest();替换为Response.End(); 就会出现一下错误:异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值.但是这个错误不会影响程序的运行,虽然try能够捕捉这个异常(不知道为什么)

在网上找了一些这个问题产生的原因:如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现ThreadAbortException 异常。您可以使用 try-catch 语句捕获此异常。Response.End 方法终止页的执行,并将此执行切换到应用程序的事件管线中Application_EndRequest 事件。不执行 Response.End 后面的代码行。此问题出现在 Response.Redirect 和 Server.Transfer 方法中,因为这两种方法均在内部调用 Response.End。

提供的解决方法有:

要解决此问题,请使用下列方法之一:

对于 Response.End,调用 HttpContext.Current.ApplicationInstance.CompleteRequest() 方法而不是 Response.End 以跳过 Application_EndRequest 事件的代码执行。

对于 Response.Redirect,请使用重载 Response.Redirect(String url, bool endResponse),该重载对 endResponse 参数传递 false 以取消对 Response.End 的内部调用。例如:

Response.Redirect ("nextpage.aspx", false);
 catch (System.Threading.ThreadAbortException e){
 throw;
 }
 接下来就可以通过其他函数或者事件调用这个函数来下载服务器上的文件了
 protected void btnOutput_Click(object sender, EventArgs e){
 try{
  string strPath = Server.MapPath("/") + "Download//学生基本信息模版.xls";
  DownloadFile(strPath, "学生基本信息模版.xls");
 }
 catch (Exception exp){
  Response.Write("<script>alert('系统出现以下错误://n" + exp.Message + "!//n请尽快与管理员联系.')</script>");
 }
 } 

从这个事件可以看出DownloadFile函数的第一个参数为文件的绝对路径不然程序会报错。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# asp.net  # 下载文件  # Asp.net实现MVC处理文件的上传下载功能实例教程  # ASP.NET Core实现文件上传和下载  # ASP.NET Core实现动态获取文件并下载  # asp.net实现多个文件同时下载功能  # asp.net实现服务器文件下载到本地的方法  # ASP.Net下载大文件的实现方法  # ASP.NET 在下载文件时对其重命名的思路及实现方法  # asp.net中文件下载功能的实例代码  # 在ASP.NET中下载文件的实现代码  # asp.net 文件下载实现代码  # ASP.NET MVC实现文件下载  # 请使用  # 请尽快  # 的是  # 客户端  # 就会  # 有个  # 第一个  # 出现在  # 您可以  # 这个问题  # 找了  # 可以看出  # 发送到  # 将此  # 报错  # 不知道为什么  # 另存为  # 本机  # 这两种  # 提供给 


相关文章: 深圳网站制作培训,深圳哪些招聘网站比较好?  在线制作视频的网站有哪些,电脑如何制作视频短片?  开心动漫网站制作软件下载,十分开心动画为何停播?  如何制作网站标识牌,动态网站如何制作(教程)?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何快速使用云服务器搭建个人网站?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  网站制作新手教程,新手建设一个网站需要注意些什么?  如何选择网络建站服务器?高效建站必看指南  香港服务器租用费用高吗?如何避免常见误区?  如何用PHP快速搭建高效网站?分步指南  中山网站推广排名,中山信息港登录入口?  郑州企业网站制作公司,郑州招聘网站有哪些?  临沂网站制作企业,临沂第三中学官方网站?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何通过云梦建站系统实现SEO快速优化?  如何打造高效商业网站?建站目的决定转化率  建站主机默认首页配置指南:核心功能与访问路径优化  盐城做公司网站,江苏电子版退休证办理流程?  定制建站策划方案_专业建站与网站建设方案一站式指南  常州企业网站制作公司,全国继续教育网怎么登录?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  青岛网站建设如何选择本地服务器?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  建站之星如何修改网站生成路径?  黑客如何利用漏洞与弱口令入侵网站服务器?  制作网站的基本流程,设计网站的软件是什么?  如何在Windows 2008云服务器安全搭建网站?  建站之星如何通过成品分离优化网站效率?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何通过商城自助建站源码实现零基础高效建站?  建站为何优先选择香港服务器?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何在腾讯云服务器上快速搭建个人网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  ,交易猫的商品怎么发布到网站上去?  湖北网站制作公司有哪些,湖北清能集团官网?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  ,在苏州找工作,上哪个网站比较好?  c# await 一个已经完成的Task会发生什么  建站org新手必看:2024最新搭建流程与模板选择技巧  如何零基础开发自助建站系统?完整教程解析  如何获取PHP WAP自助建站系统源码?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何生成腾讯云建站专用兑换码? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。