【问题标题】:Response Redirect not working after sending email发送电子邮件后响应重定向不起作用
【发布时间】:2016-01-20 14:34:04
【问题描述】:

我有一个与 EPPlus 库配合使用的代码,可以将一些数据从 dt 修改为 excel 文件,它会附加自己并发送电子邮件,并将该文件下载到发送它的客户端。

但是,从下面的 onClick 方法中,它除了 SendModFile() 之外什么都不做,我认为文本和内容需要回发,这就是为什么它不会改变,我可以拿走,但我必须禁用该过程的按钮不要发送多于一封电子邮件并重定向到主菜单,我该如何完成。

 Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Label1.Visible = True
    Button2.Enabled = False
    Label1.Text = "Sending..."

    SendModFile()
    Label1.Text = "Sent"

    Response.Redirect("~/Main.aspx")
End Sub

编辑: 这是允许在发送电子邮件后下载文件的 SendModFile() 的结尾,有没有办法对此进行优化,我相信这部分是由于 Response.End() 而搞砸的部分

Response.Clear()
Response.Buffer = True
Response.ContentType = "application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AppendHeader("content-disposition", "attachment; filename=ExcelFileName.xlsx")
Response.BinaryWrite(memStream2.ToArray())
Response.End()

【问题讨论】:

  • 这条线是否被执行Label1.Text = "Sent"

标签: asp.net email response.redirect


【解决方案1】:

当您拨打Response.End 时,响应结束。然后你就不能做重定向了。

一种解决方法是让用户在单独的 HTTP 请求中下载文件,方法是提供下载文件的链接或按钮,这样您仍然可以主要控制他们正在访问的页面。

【讨论】:

  • 或使用Server.Transfer()
  • 我也尝试过使用 server.transfer 可悲的是,@mason 不应该将 respnse.end 作为进程的结束(SendModFile())而不是整个功能?
  • @JavierM 我链接到它的文档。基本上,如果您调用 Response.End,您需要完成对响应的写入。你试过我的解决方法了吗?
  • 我明白了,我下载了文件,它可以重定向*,但是它没有禁用按钮,我该如何完成?
  • @JavierM 为什么在重定向时需要禁用该按钮?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 2015-10-01
  • 2019-06-09
  • 2015-02-23
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多