如何使用请求管道中事件实现自定义方法

1.新建类xx.cs:IHttpModule,继承该接口,实现接口方法

public class ValidateSessionHttpModule : IHttpModule
    {
        public void Dispose()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 完成请求管道中事件的注册
        /// </summary>
        /// <param name="context"></param>
        public void Init(HttpApplication context)
        {
            //throw new NotImplementedException();
            //给事件注册方法,当事件被触发时候执行
            context.AcquireRequestState += Context_AcquireRequestState;
        }

        private void Context_AcquireRequestState(object sender, EventArgs e)
        {
            //throw new NotImplementedException();
            HttpApplication application = sender as HttpApplication;
            HttpContext context = application.Context;
            string url = context.Request.Url.ToString();
            if (url.Contains("Admin"))
            {
                if (context.Session["key"] == null)
                {
                    context.Response.Redirect("/Login.aspx");
                }
            }
        }
    }

2.或者在Global文件的相应方法中写自己的代码

 public class Global : System.Web.HttpApplication
    {
        /// <summary>
        /// Web应用程序第一次启动时候调用的方法,并且只被调用一次
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Application_Start(object sender, EventArgs e)
        {
            #region 定时任务框架

            #endregion
        }

        /// <summary>
        /// 会话开始时候调用,可以用来通过Application统计总访问人数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// 全局的异常处理点,如果程序中有trycache则不调用该方法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Application_Error(object sender, EventArgs e)
        {
            //获取异常信息
            Exception ex = HttpContext.Current.Server.GetLastError();
            //Log4Net写日志
        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
时间: 2024-11-03 21:20:26

如何使用请求管道中事件实现自定义方法的相关文章

ASP.NET请求管道、应用程序生命周期、整体运行机制

我们知道在ASP.NET中,若要对ASP.NET应用程序进行 初始化并使它处理请求,必须执行一些处理步骤,熟悉应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果.永远不要做只会拖 控件的.NET程序员,Never!那么你就必须懂ASP.NET应用程序生命周期,懂ASP.NET页面生命周期,懂ASP.NET 服务器控件原理.接下来,我们一起来看看 可以先看一下先导篇 [深入ASP.NET原理系列]--ASP.NET请求管道对Asp.Net WebForm和Asp.Net

从请求管道深入剖析HttpModule的实现机制,有图有真相

想要了解底层的原理必须对请求处理过程和页面的生命周期有点了解才方便您入门学习一下内容: 关于请求处理过程和页面的生命周期将会在接下来的日子为大家做一个深入的讲解. HttpModule的实现机制如下: 1.请求到达ISAPIRuntime 的时候通过ProcessReqeust(下文统称pr ) 方法创建 HttpWrokRequest 对象. 2.在执行ISAPIRuntime 的pr 方法时候,方法内部的HttpRuntime 的pr 方法根据HttpWorkRequest 对象创建了上下文

通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?

在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成,前者负责监听请求并将接收的请求传递给给HttpApplication对象处理,后者则将请求处理任务委托给注册的中间件来完成.中间件的注册是通过ApplicationBuilder对象来完成的,所以我们先来了解一下这究竟是个怎样的对象.[本文已经同步到<ASP.NET Core框架揭秘>之中] [

页面请求管道和19个标准事件

页面请求管道和19个标准事件 图片来自网络

ajax用beforeSend自定义请求过程中客户端事件,提高用户体验

本文为博主原创,未经允许不得转载: 在应用ajax的过程中,当我们再前台提交请求的时候,如果服务端响应事件比较长,就会导致需要等很长时间在前台才能接受到服务端返回的 响应结果,往往会导致用户重复点击按钮,进行重复请求,如何可以避免这种情况发生,ajax提供了一个beforeSend属性,用这个既可以避免这种 情况发生. 用这个属性可以定义客户端向服务端请求过程中的事件,比如在请求过程中禁用请求按钮的属性,或定义请求加载状态等, 实现的代码如下: function exportData(){ $.

第五篇 基于.net搭建热插拔式web框架(拦截器---请求管道)

好了,前边我们把核心内容介绍完了,接下来要做的就是拦截用户的请求,并把请求转向沙箱内. 这里我们准备通过实现一个HttpModule类来完成请求的拦截与转发.新建一个HuberHttpModule类,并继承IHttpModule.下面我们暂时只处理Application_BeginRequest事件. 先获取request和response对象 HttpApplication application = sender as HttpApplication; HttpResponse respon

ASP.NET MVC5请求管道和生命周期

请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler.所有的HTTP请求都会进入IHttpHandler,有IHttpHandler进行最终的处理,而IHttpModule通过订阅HttpApplication对象中的事件,可以在IHttpHandler对HTTP请求进行处理之前对请求进行预处理或IHttpHandler对HTTP请求处理之后进行再次处理. 在IIS7之前,如IIS6或IIS5,请

Asp.Net HttpApplication请求管道与Session(一)

1.请求处理顺序执行事件 /********************请求处理顺序执行事件**********************/ /// <summary> /// 请求入站 /// 在此管道中禁止访问Session /// </summary> protected void Application_BeginRequest() { Response.Write("----BeginRequest---"); Response.Write("&l

mvc请求管道(一)

一.前言 在平常做后台开发的时候,经常会说到请求管道,很多开发者都知道这个,也能说几句,但是没办法详细的说一说,今天就来详细的说一下这个. 二.到达IIS之前 请看下面这个流程图.从用户打开浏览器到请求到达服务器,这些都是需要我们去配置就行了,这里面有一些知识点,http/https.tcp/ip.dns解析这些感兴趣的可以去了解一下. 三.请求到达IIS 同样先看流程图,Sys服务监听到有请求到达IIS,IIS会把这个请求转发给ISAPI,ISAPI即Internet Server Appli