Почему мое событие загрузки веб-формы ASP.NET занимает так много времени? - PullRequest
1 голос
/ 23 января 2010

У меня есть веб-форма ASP.NET 2.0, загрузка которой занимает почти 30 секунд. Я пытаюсь понять, что происходит. Я включил трассировку и добавил целую кучу операторов Trace.Write, чтобы я мог надеяться увидеть, что происходит. Результаты очень странные. Они выглядят так ...

aspx.page Начальная загрузка 0.000245093984962406
MyEvent1 0.000446804511278195
MyEvent2 0.000464654135338346
MyEvent3 0.000477984962406015
aspx.page Конечная нагрузка 23,9897560037594

Таким образом, все операторы Trace, которые я вставил (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

Ответы [ 2 ]

4 голосов
/ 23 января 2010

Вы используете главную страницу? Любые пользовательские элементы управления или пользовательские элементы управления сервером на странице? Если это так, вы можете исследовать Page_Load в этих элементах управления.

1 голос
/ 23 января 2010

Если возможно, рассмотрите возможность подключения сеанса удаленной отладки к вашему производственному серверу. После этого вы сможете установить точки останова и т. Д. И посмотреть, что именно происходит.

...