【问题标题】:Execute code before response.redirect在 response.redirect 之前执行代码
【发布时间】:2014-05-09 09:00:27
【问题描述】:

在我的代码中,我想更新记录并调用 EncryptPDF 函数。然后重定向到另一个页面。

但是我发现它不会执行response.redirect之前的代码。

根据Microsoft信息,代码会在response.redirect之前终止。

如何在重定向到另一个页面之前强制执行代码?

是否有任何代码可以用作重定向? 谢谢

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")

【问题讨论】:

  • 你需要去掉 Next 和 Else 之间的 End If - 我很惊讶代码甚至可以运行,因为我不希望它与 Else 一起工作End If.
  • 嗨,只是“复制和粘贴”错误。没有其他情况

标签: asp.net vb.net response.redirect


【解决方案1】:

尝试使用附加的 False 属性调用 Response.Redirect -

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

这里是解释(来自这里http://forums.asp.net/t/1396869.aspx?Response+Redirect+True+False)

如果您正在处理页面“A”然后您发出重定向

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

客户端将收到新页面的重定向,页面“A”将立即停止处理,因为线程将发生中止。这是重定向的默认行为。

如果您将重定向发出为

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

然后客户端将被发送新页面的重定向,但页面“A”将被允许继续处理。也许页面“A”有清理工作要做。客户端将永远不会看到页面“A”的结果,因为它们被重定向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多