Joe Yan
Joe Yan

Reputation: 2095

Execute code before response.redirect

In my code, i want to update records and call EncryptPDF function. And then redirect to another page afterward.

But i found that it will not execute the code before response.redirect.

According to Microsoft information, the code will be terminate it before response.redirect.

How can i force the code to be execute before redirect to another page ?

is there any code can serves as redirect ? Thanks

If Not rec_old Is Nothing Then
    For i = 0 To rec_old.Count - 1

        rec_old.Item(i).CurrentRenumeration = False
        dc.SubmitChanges()

        If (rec_old.Item(i).RemFile Is Nothing Or rec_old.Item(i).RemFile = 0) Then
            EncryptPDF(rec_old.Item(i).RenumID, rec_old.Item(i).SID)
        End If

        If i = rec_old.Count - 1 Then
            LastRecord = True
        Else
            LastRecord = False
        End If
    Next
End If

dc.Dispose()

Response.Redirect("XXX.aspx?SID=" & Request("SID") & "&SSID=" & GetProfile() & "&returnPath=12")

Upvotes: 0

Views: 1062

Answers (1)

Kevin Main
Kevin Main

Reputation: 2344

Try calling Response.Redirect with an additional False attribute -

Response.Redirect("XXX.aspx?SID=" & Request("SID") & "&SSID=" & GetProfile() & "&returnPath=12", False)

Here is the explanation (from here http://forums.asp.net/t/1396869.aspx?Response+Redirect+True+False)

If you are processing page "A" an then you issue a redirect

Response.Redirect('Default.aspx",True)  

The client will be sent the redirect for the new page and Page "A" will immediately stop processing as a thread abort will occur. This is the default behavior of a redirect.

If you issued the redirect as

Response.Redirect('Default.aspx",False) 

Then the client will be sent the redirect for the new page, but Page "A" will be allowed to continue processing. Perhaps page "A" has cleanup work to do or something. The client will never see the results from page "A" as they were redirected.

Upvotes: 1

Related Questions