Exclude certain pages from using a HTTPModule

前端 未结 3 1287
夕颜
夕颜 2020-12-03 21:28

Is there a good way to exclude certain pages from using a HTTP module?

I have an application that uses a custom HTTP module to validate a session. The HTTPModule is

3条回答
  •  有刺的猬
    2020-12-03 21:40

    Here is some simple example how to filter requests by extension... the example below exclude from the processing files with the specific extensions. Filtering by file name will look almost the same with some small changes...

    public class AuthenticationModule : IHttpModule
    {
        private static readonly List extensionsToSkip = AuthenticationConfig.ExtensionsToSkip.Split('|').ToList();
    
        // In the Init function, register for HttpApplication 
        // events by adding your handlers.
        public void Init(HttpApplication application)
        {
            application.BeginRequest += new EventHandler(this.Application_BeginRequest);
            application.EndRequest += new EventHandler(this.Application_EndRequest);
        }
    
        private void Application_BeginRequest(Object source, EventArgs e)
        {
            //  we don't have to process all requests...
            if (extensionsToSkip.Contains(Path.GetExtension(HttpContext.Current.Request.Url.LocalPath)))
                return;
    
            Trace.WriteLine("Application_BeginRequest: " + HttpContext.Current.Request.Url.AbsoluteUri);
        }
    
        private void Application_EndRequest(Object source, EventArgs e)
        {
            //  we don't have to process all requests...
            if (extensionsToSkip.Contains(Path.GetExtension(HttpContext.Current.Request.Url.LocalPath)))
                return;
    
            Trace.WriteLine("Application_BeginRequest: " + HttpContext.Current.Request.Url.AbsoluteUri);
        }
    }
    

    General idea is to specify in config file what exactly should be processed (or excluded from the processing) and use that config parameter in the module.

提交回复
热议问题