通过 MVC 路由记录 WebForms 页面的性能
我们有一个遗留应用程序,一部分是 ASP.NET WebForms,一部分是 ASP.NET MVC。
为了给所有 URL 提供 MVC“样式”,我们注册了一组路由来将所需的 URL 映射回 WebForms URL。
例如,
routes.Map("somemapping", "NiceUrl/{page}").To("~/UglyUrl/UglyPath/{page}.aspx");
在 MVC 控制器上,我们通过继承自 ActionFilterAttribute
并覆盖 OnActionExecuting
和 OnActionExecuted
。
我们希望为 WebForms 页面实现类似的日志记录。是否可以连接到路由部分并从那里登录?
We have a legacy application that is part-ASP.NET WebForms and part-ASP.NET MVC.
In order to give all URLs an MVC "style" we've registered a set of routes to map the desired URLs back to the WebForms URLs.
e.g.
routes.Map("somemapping", "NiceUrl/{page}").To("~/UglyUrl/UglyPath/{page}.aspx");
On the MVC Controllers we have implemented performance logging of action methods by way of a custom attribute that inherits from ActionFilterAttribute
and overrides OnActionExecuting
and OnActionExecuted
.
We would like to implement similar logging for the WebForms pages. Is it possible to hook into the routing part and log from there?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 System.Diagnostics.StopWatch 可以在全局范围内解决您的问题。
这是我建议的解决方案:
1. 在应用程序 BeginRequest 中实例化一个新的 StopWatch 实例。
2. 调用秒表实例的start方法。
3. 将秒表放入 HttpContext.Current.Items 集合
4. 在应用程序结束请求中,从 httpcontext 项中获取 StopWatch 实例,调用 stop 方法,并使用您选择的“Elapsed”属性来获取您想要存储的必要时间数据,
这将提供一个位置您可以在其中测量所有请求、MVC 和 Web 表单的处理时间。
Using a System.Diagnostics.StopWatch could solve your problem at a global level.
Here is my proposed solution:
1. In the application BeginRequest instantiate a new instance of StopWatch.
2. Call the start method on the stop watch instance.
3. Place the stop watch in the HttpContext.Current.Items collection
4. In the application End Request, get the StopWatch instance from the httpcontext items, call the stop method, and used the "Elapsed" property of your choice to get the necessary time data that you would like to store
this will provide one single place where you can measure the processing time of all requests, mvc and webforms.