我们有一个遗留应用程序,它是-ASP.NET WebForms和part-ASP.NET MVC。
为了给所有URL提供MVC“样式”,我们已经注册了一组路由,将所需的URL映射回WebForms URL。
e.g。
routes.Map("somemapping", "NiceUrl/{page}").To("~/UglyUrl/UglyPath/{page}.aspx");
在MVC控制器上,我们通过继承自ActionFilterAttribute
并覆盖OnActionExecuting
和OnActionExecuted
的自定义属性实现了操作方法的性能记录。
我们希望为WebForms页面实现类似的日志记录。是否可以挂钩路由部分并从那里登录?
答案 0 :(得分:1)
使用System.Diagnostics.StopWatch可以在全球范围内解决您的问题。
以下是我提出的解决方案:
1.在应用程序中,BeginRequest实例化一个新的StopWatch实例
2.在秒表实例上调用start方法
3.将秒表放在HttpContext.Current.Items集合中
4.在应用程序结束请求中,从httpcontext项获取StopWatch实例,调用stop方法,并使用您选择的“Elapsed”属性来获取您要存储的必要时间数据
这将提供一个单独的位置,您可以在其中测量所有请求,mvc和webforms的处理时间。