2010-01-22 14 views
1

我有一個ASP.NET 2.0 Web窗體,需要將近30秒才能加載。我想弄清楚發生了什麼事。我已經啓用了跟蹤並且放入了大量的Trace.Write語句,所以我希望能夠看到發生了什麼。結果非常奇怪。他們看起來像這樣...爲什麼我的ASP.NET web表單Load事件花了這麼久?

aspx.page開始加載所有我把跟蹤語句的0.000245093984962406
MyEvent1 0.000446804511278195
MyEvent2 0.000464654135338346
MyEvent3 0.000477984962406015
aspx.page結束負載23.9897560037594

所以(MyEvent1,MyEvent2,MyEvent3)非常快速地發射。我放入的最後一條Trace語句恰好在Page_Load事件結束時。那麼任何人都可以告訴我,在Page_Load事件中的最後一個聲明之後,但在結束載入發生之前,可能會發生什麼?我無法弄清楚這可能會導致這麼長時間。有沒有其他的方法可以解決Page_Load事件中發生的事情?

更新 - 添加代碼

 protected void Page_Load(object sender, EventArgs e) 
    { 
     Trace.Write("Starting Page Load"); 

     if (!Page.IsPostBack) 
     { 
      Trace.Write("Setting Body Tag and Meta Tags"); 
      HtmlGenericControl _mainBodyTag = (HtmlGenericControl)Page.FindControl("mainBodyTag"); 
      _mainBodyTag.Attributes["class"] = "drill membership"; 

      HtmlMeta _meta = new HtmlMeta(); 
      _meta.Name = "publication_date"; 
      _meta.Content = Sitecore.Context.Item.Statistics.Updated.ToShortDateString(); 
      Page.Header.Controls.Add(_meta); 

      Trace.Write("Binding data"); 
      this.BindData(); 
     } 
    } 

    protected void BindData() 
    { 
     //Feature 
     Trace.Write("Setting Featured Item Info"); 
     litFeatureType.Text = "Report"; 
     hypTitle.Text = _feature.Fields["Title"].Value; 
     hypTitle.NavigateUrl = LinkManager.GetItemUrl(_feature); 
     hypReadMore.NavigateUrl = LinkManager.GetItemUrl(_feature); 
     hypFeature.NavigateUrl = LinkManager.GetItemUrl(_feature); 
     litFeatureText.Text = _feature.Fields["ShortDescription"].Value; 
     litDate.Text = ((DateField)_feature.Fields["ReleaseDate"]).DateTime.ToShortDateString(); 
     litLocation.Visible = false; 
     pnlMeeting.Visible = false; 

     //News 
     Trace.Write("Getting Member News"); 
     List<Item> _memberNews = _repository.GetMemberNews(); 
     rptNews.DataSource = _memberNews; 
     rptNews.DataBind(); 

     //Lower Left 
     Trace.Write("Getting lower left content"); 
     Item _home = Sitecore.Context.Database.SelectSingleItem("/sitecore/Content/Home"); 
     litLowerLeftContent.Text = _home.Fields["Lower Left Content"].Value; 

     //Lower Right 
     Trace.Write("Getting lower right content"); 
     litLowerRightContent.Text = _home.Fields["Lower Right Content"].Value; 

     //Other Member Resources 
     Trace.Write("Getting member resources items"); 
     Item _memberHome = Sitecore.Context.Database.SelectSingleItem("/sitecore/Content/Home/Member"); 
     rptMenu1.DataSource = _memberHome.Children; 
     rptMenu1.DataBind(); 

     //Membership Stats 
     Trace.Write("Getting membership stats"); 
     List<MembershipStat> _stats = _repository.GetMembershipStats(); 
     rptStats.DataSource = _stats; 
     rptStats.DataBind(); 
     litTotal.Text = _totalCount.ToString(); 

     //Rail Content 
     litRailContent.Text = _home.Fields["Right Rail Middle Content"].Value; 

     Trace.Write("Finished"); 
    } 

更新 - 添加跟蹤輸出例如:

Binding data 0.000103338345864662 0.000069 
Setting Featured Item info 0.000174093984962406 0.000051 
Getting Member News 0.000461293233082707 0.000287 
Getting lower left content 0.0328178270676692 0.032357 
Getting lower right content 0.0333527706766917 0.000535 
Getting member resources items 0.0333826090225564 0.000030 
Getting membership stats 0.130918973684211 0.097536 
Finished 0.244487176691729 0.023386 
aspx.page End Load 23.9897560037594 23.745269 
aspx.page Begin LoadComplete 23.9898036541353 0.000048 
aspx.page End LoadComplete 23.9898190150376 0.000015 
aspx.page Begin PreRender 23.9898322293233 0.000013 
aspx.page End PreRender 23.9901133834586 0.000281 
aspx.page Begin PreRenderComplete 23.9901457819549 0.000032 
aspx.page End PreRenderComplete 23.9901602744361 0.000014 
aspx.page Begin SaveState 24.0240230714286 0.033863 
aspx.page End SaveState 24.0283510075188 0.004328 
aspx.page Begin SaveStateComplete 24.0283821616541 0.000031 
aspx.page End SaveStateComplete 24.0283963759398 0.000014 
aspx.page Begin Render 24.0284089849624 0.000013 
aspx.page End Render 24.0736610977444 0.045252 
+0

在「Thread.Sleep(20);」的代碼中執行搜索。如果你發現它,把它改爲一個更低的數字,比如10 – John 2010-01-22 21:38:29

+0

儘管如此,我認爲唯一會導致這種情況的是網絡問題。你有任何模塊/其他代碼在服務器的網絡上請求資源嗎? – John 2010-01-22 21:39:53

+0

Global.asax中是否有任何奇怪的管道事件處理程序?或者,您的IIS是否有任何自定義的ISAPI模塊註冊? – womp 2010-01-22 22:45:12

回答

4

您使用的是母版頁嗎?頁面上的任何用戶控件或自定義服務器控件?如果是這樣,您可能需要在這些控件中調查Page_Load。

+2

事實證明,這個頁面上還有其他的自定義服務器控件,我不知道。我在這些控件中發現了有問題的代碼。 – 2010-01-26 14:51:26

1

如果可能的話,可以考慮遠程調試會話連接到您的生產服務器。然後,您應該能夠設置斷點等,看看究竟發生了什麼。

+0

這將停止服務器處理請求。 – David 2010-01-22 22:34:25

相關問題