asp.net无法在response.binarywrite之后继续

时间:2014-07-17 06:23:10

标签: asp.net httpresponse

我有以下代码成功地将pdf写入客户端。问题是我无法在此之后获得任何代码来执行。它是向导的最后一步,尽管将它放在ActiveStepChanged处理程序中,但它永远不会进入确认/最终页面。

                    Response.Clear()
                Response.ContentType = Nothing
                Response.AddHeader("content-disposition", "attachment; filename=" & FileName)
                Response.BinaryWrite(data)
                Response.Flush()

基本上,有一个复选框,当用户点击完成按钮时,他们会检查是否要下载文件。我不想有一个单独的按钮来下载文件,因为众所周知用户会感到困惑,并认为通过按下载按钮他们已经完成了必要的步骤并且从未完成他们的应用程序(我们&# 39;在这里谈论非计算机文化用户)。所以这一切都有效,除非它们在选择该选项时没有进入确认步骤。

如何确保下载文件后继续处理?

2 个答案:

答案 0 :(得分:0)

最好的方法是在HttpHandler中编写此代码,并在Response.Flush之后调用Response.End。

答案 1 :(得分:0)

我自己想出了这个。基本上,我将response.binarywrite代码(在op中列出)放在它自己的空webform的代码中。然后我调用然后使用ScriptManager.RegisterClientScriptBlock中的javascript openwindow函数打开它。

原始页面中的代码:

            Me.Session("PrintApplication") = data
            Me.Session("PrintApplicationFileName") = FileName

            ScriptManager.RegisterClientScriptBlock(Me, Me.GetType, "PrintReport", "window.open('PrintApplication.aspx');", True)

PrintApplication.aspx中的代码:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Me.Session("PrintApplicationFileName") <> Nothing Then
        Dim data As Byte() = Me.Session("PrintApplication")
        Dim FileName As String = Me.Session("PrintApplicationFileName")

        Me.Session("PrintApplication") = Nothing
        Me.Session("PrintApplicationFileName") = Nothing
        Response.Clear()
        Response.ContentType = Nothing
        Response.AddHeader("content-disposition", "attachment; filename=" & FileName)
        Response.BinaryWrite(data)
        Response.Flush()
        Response.End()

    End If

End Sub

完美运作