3

ASP.NETアプリケーションのフッターに、各ページの読み込みにかかった時間をユーザーに示すラベルを追加したいと思います。私のsite.masterページには現在次のものがあります。

public partial class SiteMaster : MasterPage
   {
    public Stopwatch pageLoadTime = new Stopwatch();

    protected void Page_Load(object sender, EventArgs e)
    {
        pageLoadTime.Start();

        //Other stuff here

        pageLoadTime.Stop();
        TimeSpan ts = pageLoadTime.Elapsed;

        // Format and display the TimeSpan value. 
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);

        PageLoadTimeLabel.Text = "Page loaded in " + elapsedTime;
    }

しかし、これは「真の」ページの読み込み時間を与えてくれません。たとえページの読み込みに5秒かかっても、0.1秒が返されます。そのため、終了コードをPage_LoadCompleteセクションに移動しましたが、これではラベルを更新できません。

ポインタはありますか?Firebugなどを使用できることは知っていますが、ユーザーがこの情報に簡単にアクセスできるようにしたいと思います。

4

3 に答える 3

3

私はでそれをしますglobal.asax

private DateTime start_time

protected void Application_BeginRequest(object sender, EventArgs e)
{
    start_time = DateTime.Now;
}
protected void Application_EndRequest(object sender, EventArgs e)
{
    var duration = DateTime.Now - start_time;
    Response.Write("...");
}

または、セッションに書き込んでマスターページを読み取ります。

于 2013-03-13T11:17:32.087 に答える
1

Linusのおかげで、私はこれを作成しました。

    protected void Application_BeginRequest(Object sender, EventArgs e)
{
    Context.Items["loadstarttime"] = DateTime.Now;
}

その後

public void Application_EndRequest(object src, EventArgs e)
{
    DateTime end = (DateTime)Context.Items["loadstarttime"];
    TimeSpan ts = DateTime.Now - end;

    // Format and display the TimeSpan value. 
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);

    Response.Write("<div style='text-align: center' class='thesmallprint'>Page loaded in: " + elapsedTime + "</div>");
}
于 2013-03-13T12:05:08.903 に答える
-1

Page.LoadCompleteはあなたを助けることができます。Page_Loadイベントハンドラーでタイマーを開始し、LoadCompleteイベントハンドラーでタイマーを停止すると、実際の時間が取得される可能性があります。

于 2013-03-13T11:22:19.293 に答える