我在我的应用中重新加载某些页面时调用了以下方法。关键是要中断当前事务,请求身份验证并在返回页面时调用指定的函数以完成事务。 State和方法名称在临时中保存在Session中。
重定向回页面后,该方法执行,一切看起来都很好,但是当点击指向同一页面的链接时,它现在只显示相同的页面,而不是具有空字段等的新页面,并且没有页面事件火。最终,如果我离开页面足够长,可能是5分钟,它将刷新页面或单击带有Response.Redirect调用的按钮将执行此操作。
通常没有反射调用相同的页面方法,它看起来没问题。似乎使用反射可能会将页面对象保留在内存中而不允许它进行GCed。这里发生了什么?有很多变通方法,但我仍然希望将来能够理解它。
protected override void OnLoadComplete(EventArgs e)
{
base.OnLoadComplete(e);
if (IsRestoredPageState && priorPageState.CallingFunction != null)
{
var completeAction = this.GetType().GetMethod(priorPageState.CallingFunction);
completeAction.Invoke(this, null);
completeAction = null;
}
}