System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();这是一个下载文件的代码,在最后用了
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
这样如果我在下面还要进行操作,是没有办法的。
不知道不加会有怎么样的后果,还行大家详细的说明下

解决方案 »

  1.   

    你的头像不错。End就是结束了,不往下运行。下面还有操作,当然可以不加。
      

  2.   

    我知道加上End表示的是停止,但如果不加,会有什么影响呢?我重要想问的是这个问题
      

  3.   

    不是这么理解,调用这个方法之后就终止了对客户端的响应,关闭了本次会话的socket。
    如果你还需要做其他的工作,那就不要用了。实际上编写大部分的asp.cs代码时我们都没有Response.End(),但是系统会做这个事情。
      

  4.   

    关于Response.End():
    首先讲讲它的好处。
    调试程序的时候用处也很有用,类似设置断点,特别是你的程序有重大问题,如有死循环的时候一般的response.write   查看中间结果是无法看到的,这时在response.write后加入response.end,这个查看中间结果很有用。不过,如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 try-catch 语句捕获此异常。
    Response.End 方法终止页的执行,并将此执行切换到应用程序的事件管线中的 Application_EndRequest 事件。不执行 Response.End 后面的代码行。
    此问题出现在 Response.Redirect 和 Server.Transfer 方法中,因为这两种方法均在内部调用 Response.End。
      

  5.   

    谢谢周公的讲解,这样我就可以放心的去掉End了。
      

  6.   

    还有一个问题
    关于用Response.WriteFile()在win2008里文件名变成前面多了地址的问题
    不知道 周公 能不能帮解决下
      

  7.   

    不加response.end(),会把HTML源文件信息写到文件中的。