2013-03-13 62 views
3

我想在我的ASP.NET應用程序的頁腳中添加一個標籤,顯示我的用戶每個頁面加載的時間。在我site.master頁我目前有:在ASP.NET主頁的頁腳中添加頁面加載字符串

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部分,但是這看起來不能更新標籤。

任何指針?我知道我可以使用螢火蟲等,但我希望我的用戶能夠輕鬆訪問這些信息。

回答

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("..."); 
} 

或者寫入到一個會話,並在你的母版頁讀取。

-1

Page.LoadComplete可以幫助你。如果您在Page_Load事件處理程序中啓動計時器並在LoadComplete事件處理程序中停止它,那麼您可能會得到實際時間。

1

感謝萊納斯我創造了這個它做什麼,我想:

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>"); 
} 
+0

接受萊納斯的答案,然後:-) – 2013-03-13 12:47:51