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

时间:2017-11-08 09:58:54

标签: asp.net vb.net infinite-loop textwriter

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

在调试

Server.Execute每次都会触发按钮点击事件。但为什么呢?

似乎preserveForm = true正在维护表单中的click事件,但我需要这个来维护我的查询字符串。

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

我知道我可以做一些类型或变量标志来检查循环的返回但是我想知道:

  • 这是正确的行为吗?
  • 是这样,为什么?
  • 清除方法以避免循环。
  • 推荐用于捕获整个页面html的替代方法。

1 个答案:

答案 0 :(得分:2)

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

  

preserveForm

     

类型:System.Boolean

     

true 保存QueryString和   表格集; false 清除QueryString和Form集合。

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