我想在页面底部显示一个简单的“内置x.yz秒”文本,以便轻松查看各种选项。 (某些页面是使用“常规”用户在前一页中输入的参数构建的,他们也希望看到他的决定结果)
我知道我可以在asp.net中使用痕迹,但它不是非常用户友好,我担心它对性能不是很好。
您认为http://www.aspnetzone.de/blogs/peterbucher/archive/2008/03/16/requestdauer-mit-einem-httpmodule-und-response-filter-ausgeben.aspx(httpsodule,德语网页)是一个很好的解决方案吗?
哦,既然我现在正在做几个项目,我想为asp.net mvc页面和webforms做这个:)
谢谢!
答案 0 :(得分:1)
HttpContext对象包含“start-of-http-request”的时间戳。
我想这通常会足够好,除非它对你减去等待可用线程可用的任何时间很重要。
所以构建时间
DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalMilliseconds
如果您想要最精确的时间,可以手动将开始时间存储在global.asax
中 void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpContext.Current.Session.Add("LastPageStart", DateTime.Now);
}
并从
的结束时间中减去它 Application_EndRequest
将其记录到log4net,或其他一些。
当然,如果你需要在页面底部显示它,而不是简单地让信息来监控健康状况,那么你可以在页面上手动减去它。
答案 1 :(得分:0)
绝对不要在生产代码中使用痕迹!
可以读取德语,但我可能只需将当前的DateTime存储在页面的构造函数中,然后在OnPreRender事件中打印当前时间和存储时间之间的时间差即可实现此目标。显示时间 - OnPreRender事件是页面生命周期中的最后一点,它可以改变页面的呈现内容(不进行某种后处理)
只要您在标签的OnPreRender事件后没有进行任何繁重的处理,这应该可以正常工作。