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修饰?
...全文
314 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
esafe 2007-05-21
  • 打赏
  • 举报
回复
Trace 不是调试的时候用的么? 页面运行时需要计算页面运行时间...
「已注销」 2007-05-21
  • 打赏
  • 举报
回复
在<%@ Page %> 里 加上 Trace="true"
esafe 2007-05-21
  • 打赏
  • 举报
回复
没高手来发表一下意见么?
esafe 2007-05-21
  • 打赏
  • 举报
回复
如何得到页面生存周期?另外,每个页面的执行时间是要显示在页面的底部的
Ivony 2007-05-21
  • 打赏
  • 举报
回复
第一段代码的确是有问题的,但是改成HttpContext.Current.Items就没问题了。
shadow841112 2007-05-21
  • 打赏
  • 举报
回复
应该使用页面的生存周期判断
weizhuangzhi 2007-05-21
  • 打赏
  • 举报
回复
这样的只能一页一页测试
esafe 2007-05-21
  • 打赏
  • 举报
回复
就算Lock了,后面的页面请求也会覆盖掉前面已经记录下来的时间的啊
shadow841112 2007-05-21
  • 打赏
  • 举报
回复
操作Application
最好要
Application.Lock
Application.Unlock

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧