我需要在将文件发送给用户下载后运行几种方法.发生的事情是,在我向用户发送文件后,响应被中止,之后我再也无法做任何事情了response.end().
例如,这是我的示例代码:
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=test.pdf");
Response.ContentType = "application/pdf";
byte[] a = System.Text.Encoding.UTF8.GetBytes("test");
Response.BinaryWrite(a);
Response.End();
StartNextMethod();
Response.Redirect(URL);
Run Code Online (Sandbox Code Playgroud)
所以,在这个例子中StartNextMethod并Response.Redirect没有执行.
我尝试的是使用以下代码创建了一个单独的处理程序(ashx):
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment; filename=test.pdf");
context.Response.ContentType = "application/pdf";
byte[] a = System.Text.Encoding.UTF8.GetBytes("test");
context.Response.BinaryWrite(a);
context.Response.End();
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
Download d = new Download();
d.ProcessRequest(HttpContext.Current);
StartNextMethod();
Response.Redirect(URL);
Run Code Online (Sandbox Code Playgroud)
但同样的错误发生了.我已经尝试用CompleteRequest替换Response.End,但它没有帮助.
我想问题是我正在使用HttpContext.Current但应该使用单独的响应流.那是对的吗?我如何在一个单独的方法中一般地做到这一点(假设我希望我的处理程序接受数据和内容类型的字节数组,并且可以从单独的响应中下载.我真的不想使用单独的页面来响应.
更新
我仍然没有找到一个好的解决方案.我想在用户下载文件后做一些操作,但不使用单独的页面来响应\请求.
更新
由于您没有说第二页,请改为执行此操作.在页面中添加一个部分,用于检查查询字符串参数(类似于fileid或path等...).如果存在此值,则使用现有代码启动下载过程.如果此值不存在则会像正常情况一样运行.
现在,当用户单击下载链接时,您将执行回发(您已经在执行此操作).在这篇文章中,在页面上创建一个iFrame,并使用添加的查询字符串参数(mypage.aspx?id = 12664或?download = true,类似的东西)将iFrame的URL设置为您的页面URL.创建iframe之后执行任何额外的数据库/等等......你也希望如此.
示例
- http://encosia.com/ajax-file-downloads-and-iframes/
上面链接的示例使用iFrame和更新面板,就像您正在谈论的那样.
原始帖子
Response.Flush将允许您在将文件发送给用户后继续处理,或者只是不调用Response.End(您实际上并不需要).
但是Daniel A. White是正确的,你发送文件后实际上无法从代码中重定向,如果你尝试,你会收到错误.但是,如果需要,您可以继续执行其他服务器端操作.
其他答案与普遍的共识一致,你不能在文件开始下载后重定向:https://stackoverflow.com/a/822732/328968(PHP,但相同的概念,因为它一般涉及HTTP).或下载文件后指向新页面.
Response.End()抛出一个线程中止异常.它旨在结束您的回复.之后没有代码将在该线程中处理.
End方法使Web服务器停止处理脚本并返回当前结果.不处理该文件的其余内容.
你想要达到的目标是什么?
如果您的目的是允许pdf下载然后将用户带到其他页面,那么一些javascript可以帮助您.
添加带有计时器的脚本,将location.href设置为重定向的分页.
| 归档时间: |
|
| 查看次数: |
8657 次 |
| 最近记录: |