ASP.NET - 使用 server.execute 时无限循环

ASP.NET - Infinite loop when using server.execute

当使用 server.execute 捕获当前页面的 html 时,以下代码陷入无限循环。

调试时

Server.Execute 导致每次都触发按钮单击事件。但是为什么?

看来 preserveForm = true 正在维护表单中的点击事件,但我需要它来维护我的查询字符串。

Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
  test()
End Sub

Protected Sub test()
  Dim writer As TextWriter = New StringWriter()
  Server.Execute("ThisPage", writer, True)
End Sub

我知道我可以做某种或可变标志来检查循环的 return 但我想知道:

根据 HttpServerUtility.Execute Method 的 MSDN 页面,此方法的 preserveFrom 参数具有以下定义的行为:

preserveForm

Type: System.Boolean

true to preserve the QueryString and Form collections; false to clear the QueryString and Form collections.

表单集合将包含页面上控件的状态数据。因此,如果 Execute() 作为事件的一部分执行,这可能会导致无限循环。