ASP.NET 页面执行时间的问题
esafe 2007-05-21 01:22:38 以下是在网上找到的计算asp.net页面执行时间的代码,但有个地方不明白,Application变量不是全部页面共享的么?那么一个页面请求开始(还没结束),另外一个页面开始了,那么Application不是被后面的页面覆盖了?那么前面的页面执行时间不就是不准确了?
在Global.asax.cs文件中
protected void Application_BeginRequest(Object sender, EventArgs e)
{
Application["StartTime"] = System.DateTime.Now;
}
protected void Application_EndRequest(Object sender, EventArgs e)
{
System.DateTime startTime = (System.DateTime)Application["StartTime"];
System.DateTime endTime = System.DateTime.Now;
System.TimeSpan ts = endTime - startTime;
Response.Write("页面执行时间:"+ ts.Milliseconds +" 毫秒");
}
我的做法是:
先定义一个类继承System.Web.UI.Page,在这个类的Init和Render方法中统计执行时间
public class MyASPX : System.Web.UI.Page
{
private DateTime startTime;
public TimeSpan execTime;
void Page_Init(Object sender, EventArgs e)
{
startTime = DateTime.Now;
}
protected override void Render(HtmlTextWriter writer)
{
execTime = DateTime.Now - startTime;
base.Render(writer);
}
}
然后所有页面继承MyASPX,最后execTime就是这个页面的执行时间了(也许还有少许偏差,但不大了)
以上两种方法哪种更好呢?第二中方法会产生什么问题吗?
另外,如果很多页面里需要执行MyASPX中的某个方法,应该把该方法定义成static的吗?例如判断一个字符串是否为数字的方法
bool StrIsInt(string Str)
{
try
{
Int32.Parse(Str);
return true;
}
catch
{
bool flag = false;
return flag;
}
}
是否应该加上 static修饰?