我有一个c#ASP.NET程序需要超过1分钟的页面,b.aspx,在点击打开b.aspx的页面a.aspx中的图表时加载。
我认为这可能是我在b.apsx中的查询,但事实证明它们运行得非常快。将一些日志记录放入我的代码中我看到,从b.aspx中的页面/类实例化到它到达Page_init的时间本身就是52秒。看起来加载52秒的a.aspx正在执行PostBack并在我到达b.aspx之前再次加载。
我在a.aspx的图表中设置了以下内容。
Chart.Series[series].LegendPostBackValue = "SomeValue";
Chart.Series[series].LegendUrl = url;
在Chart_Click()
我设置了会话值,以便我可以在b.aspx中引用它。
HttpContext.Current.Session["value"] = e.PostBackValue;
在b.aspx中,我使用
访问数据String somevariable = HttpContext.Current.Session["value"].ToString();
答案 0 :(得分:-1)
该页面需要很长时间才能到达page_init,因为在加载新页面之前由于回发而必须重新加载调用页面。重新加载是由LegendPostBackValue引起的。
a.aspx,点击进入b.aspx的页面设置了LegendPostBackValue
。这将导致a.aspx重新加载需要额外的52秒。除去
Chart.Series[series].LegendPostBackValue = "SomeValue";
并删除Chart_Click
HttpContext.Current.Session["value"] = e.PostBackValue;
而是使用
Chart.Series[series].LegendUrl = url + "?value="SomeValue";
并在页面b.apsx上使用
String somevariable = HttpContext.Current.Request.QueryString["value"];
而不是
String somevariable = HttpContext.Current.Session["value"].ToString();
修复了问题。页面a.aspx不必重新加载,因为没有回发值,而是跟随到b.aspx的URL。