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

本文主要介绍了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("alert('系统出现以下错误://n" + ex.Message + "!//n请尽快与管理员联系.')");  } }

登录后复制

这个函数是下载功能的组程序,其中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("alert('系统出现以下错误://n" + exp.Message + "!//n请尽快与管理员联系.')");  } }

登录后复制

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

更多ASP.NET实现从服务器下载文件问题处理相关文章请关注PHP中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2550906.html

(0)
上一篇 2025年3月6日 06:02:46
下一篇 2025年2月24日 01:39:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • asp.net反射简单应用实例

    本文实例讲述了asp.net反射简单应用。分享给大家供大家参考,具体如下: 反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。…

    编程技术 2025年3月6日
    200
  • ASP.NET页面传值

      这个问题是上周去远洋公司面试的一道笔试题,面试的时候面试官也问到了,虽然事先有所准备当时也回答上了,但是从根本上说自己还不太理解。正好这两天做高效平台评教系统的时候用到了页面传值,就又从网上查了一些相关资料。   常用的页面传值有以下几…

    2025年3月6日
    200
  • ASP.NET总结

       asp.net视频虽然看完了,但是视频里老师讲的每章之间联系并不是很强,所以课后自己通过画思维导图把知识串联起来,自己也只是根据笔记和理解整理了一下,有遗漏之处不还希望大家补充。   官方解释(来自百度百科):   ASP.NET…

    2025年3月6日
    200
  • ASP.NET页面之间传递值的几种方式

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说,常用的较简单有querystring,session,cookies,application,server…

    编程技术 2025年3月6日
    200
  • asp.net core mvc权限控制 在视图中控制操作权限的代码示例详细介绍

    本文主要介绍了asp.net core mvc权限控制:在视图中控制操作权限。具有很好的参考价值,下面跟着小编一起来看下吧 在asp.net core mvc中提供了权限验证框架,前面的文章中已经介绍了如何进行权限控制配置,权限配置好后,权…

    编程技术 2025年3月6日
    200
  • 《ASP.NET》数据的绑定—Repeater图文详解

         前面学习了html静态的网页编程,了解了其中的一些语法,但是自己感觉对web编程掌握的还不够过瘾,于是跟着计划,开始了asp.net之旅。在写这篇asp.net博客之前之前,我想先将先比较一下asp.net与html的区别与联系。…

    2025年3月6日 编程技术
    200
  • asp.net利用反射实现给model类赋值的示例代码分析

    这篇文章主要介绍了asp.net利用反射实现给model类赋值的方法,结合实例形式分析了asp.net使用反射给model类赋值的操作步骤与相关操作技巧,需要的朋友可以参考下 本文实例讲述了asp.net利用反射实现给model类赋值的方法…

    编程技术 2025年3月6日
    200
  • ASP.NET如何实现进度条效果的实例分析

    这篇文章主要为大家详细介绍了asp.net实现简单的进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 我们先看下进度条效果 我点击了按钮后他会显示进度页面,进度完成后,进度条消失,其实也是比较简单的了。 我们需要一个进度条代码文…

    2025年3月6日
    200
  • Asp.Net+jQuery如何实现省市二级联动功能的方法详解

    这篇文章主要介绍了jquery+asp.net实现省市二级联动功能的方法,涉及asp.net数据库读取与字符串转换相关操作技巧,需要的朋友可以参考下 本文实例讲述了jQuery+Asp.Net实现省市二级联动功能的方法。分享给大家供大家参考…

    编程技术 2025年3月6日
    200
  • 火狐浏览器下载文件不询问保存目录怎么办

    php小编香蕉教你解决火狐浏览器下载文件不询问保存目录的问题。只需简单几步,即可轻松设置保存目录,让你下载文件时更加便捷高效。 火狐浏览器下载文件不询问保存目录解决办法 首先,打开火狐绿色浏览器。在浏览器右上角,有一个由三条横线组成的图标,…

    2025年3月5日 互联网
    200

发表回复

登录后才能评论