|
需求:新增 IHttpModule 模块拦截所有 HTTP 请求,统计请求开始到结束耗时,方便排查比较耗时的页面,从而优化提升用户体验。
在 ASP.NET 中,已经预定义了许多 HttpModule,甚至已经在服务器的网站配置文件中进行了注册,在系统文件夹 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config 中看到已经注册的 HttpModule 如下:
<httpModules>
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule"/>
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
<add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule"/>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/>
<add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule"/>
<add name="RoleManager" type="System.Web.Security.RoleManagerModule"/>
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"/>
<add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule"/>
<add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule"/>
<add name="Profile" type="System.Web.Profile.ProfileModule"/>
<add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule"/>
<add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
新建 RequestTimeHttpModule 对象继承 IHttpModule 接口,代码如下:
我们新建的 HttpModule 模块还要在 web.config 配置,配置如下:
尝试访问网站,效果图如下:
ASP.NET HTTP 模块和 HTTP 处理程序:https://learn.microsoft.com/zh-CN/troubleshoot/developer/webapps/aspnet/development/http-modules-handlers
(完)
|
上一篇:Redis 内存八种淘汰策略下一篇:.NET/C# 基于 NamedPipe 命名管道跨进程通信[附源码]
|