Home Backend Development C#.Net Tutorial Introduction to the application method of ASP.NET filter

Introduction to the application method of ASP.NET filter

Jan 21, 2017 pm 03:06 PM

In J2EE Web development, there is a filter filter. This filter can intercept the specified URL access and execute the filter method. According to the actual application situation, the requested code and session information can be modified in the filter, and the session information can also be modified. It can be used for permission control. In short, this filter is very meaningful. It can also be said to be an application of the chain of responsibility design pattern in J2EE.

So is it possible to define such a filter structure in ASP.NET and perform corresponding logical operations in the filter? The answer is yes, this article will tell you if you write a filter, how to configure it into an IIS web application.

Process 1: How to write a filter

Writing a filter is actually writing a filter class, that is, writing an HttpModule module. This filter should implement the IHttpModule base class and repeat Write the Init method and give you a practical example as follows:

This is a PageFilter.cs

using System;
using System.Web;
using System.Web.SessionState;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.IO;
public class PageFilter: IHttpModule
{
        public String ModuleName
        {
            get { return "PageFilter"; }
        }
        //在 Init 方法中注册HttpApplication 
        // 通过委托方式注册事件
        public void Init(HttpApplication application)
        {
            application.AcquireRequestState += new EventHandler(Application_AcquireRequestState);            
        }
  private void Application_AcquireRequestState(Object source, EventArgs e)
        {
            HttpApplication application = (HttpApplication)source;
            HttpContext context = application.Context;
            HttpSessionState session = context.Session;
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;
            String contextPath = request.ApplicationPath;
        }
}
Copy after login

It should be noted that "filter" can also be called "interceptor". That is, the process of intercepting the entire HTTP request/response, because the entire request/response process can be divided into many stages, then there will be a problem involved, that is, which specific stage your filter wants to intercept, the above Init In the function, you can define the specific stages you want to intercept. For example, the above interception is the stage where the request session is generated. AcquireRequestStat is the representative of this state, and the corresponding processing function after interception is Application_AcquireRequestState, so the following defines an Application_AcquireRequestState method. In this method You can obtain a series of objects such as application, context, session, request, and response through forced type conversion. Based on obtaining these objects, you can write core business logic, such as determining whether the current URL access is legal and checking Whether the current access is the access of the user after logging in, etc.


In addition, since the entire process of interception has many stages, how to intercept other stages? This should be very simple. Similar to the above, just define it according to the following logic in Init:

application.Standard name of the stage 1 += new EventHandler (name of the processing method corresponding to this stage 1);
application. The standard name of the stage 2 += new EventHandler (the corresponding processing method name of this stage 2);
. . .

The standard names of stages mean that these stages have standard names and are standard attributes of the application object, such as AcquireRequestState above, as well as BeginRequest, AuthenticateRequest, AuthorizeRequest, ResolveRequestCache, AcquireRequestState, PreRequestHandlerExecute, PostRequestHandlerExecute , ReleaseRequestState, UpdateRequestCache, EndRequest, many stages, etc. These stages have specific meanings.

The name of the processing method corresponding to this stage is actually your own definition of the method corresponding to this stage. There are examples above. , no more explanation.

Another point that needs special attention is that there are so many stages that can be intercepted, but in actual applications, we often only intercept one or two stages, and we should also note that some server objects can only be intercepted in specific stages. For example, the Session object does not exist in the BeginRequest stage, but does exist in the AcquireRequestState and subsequent stages. Therefore, specific stages must be intercepted according to actual needs. This is the most common problem for novices.

Process 2: How to configure filtering

We have written a filter for a .cs file, so how to make this filter work? This needs to be configured, and it will definitely not work by default. To intercept, you need to configure the filter into the application's Web.config file. The configuration of the above example is as follows:

<configuration>
<system.web>
 <httpModules>
   <add name="pageModule" type="PageFilter"/>
 </httpModules>
</system.web>
</configuration>
Copy after login

In this way, it is actually configured, and then you can publish the website to generate dll, etc. , URL access will be automatically intercepted after that time, but please remember that by default, all requests for the application will be intercepted. If you point to intercepting specific requests, for example, you want to intercept only requests for aspx files, then You can add the judgment of the file suffix name in the filter logic. If it is not aspx, just let it go.

For more related articles on the application methods of ASP.NET filters, please pay attention to the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1655
14
PHP Tutorial
1252
29
C# Tutorial
1226
24
Testing C# .NET Applications: Unit, Integration, and End-to-End Testing Testing C# .NET Applications: Unit, Integration, and End-to-End Testing Apr 09, 2025 am 12:04 AM

Testing strategies for C#.NET applications include unit testing, integration testing, and end-to-end testing. 1. Unit testing ensures that the minimum unit of the code works independently, using the MSTest, NUnit or xUnit framework. 2. Integrated tests verify the functions of multiple units combined, commonly used simulated data and external services. 3. End-to-end testing simulates the user's complete operation process, and Selenium is usually used for automated testing.

C# .NET Interview Questions & Answers: Level Up Your Expertise C# .NET Interview Questions & Answers: Level Up Your Expertise Apr 07, 2025 am 12:01 AM

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.

C# .NET: Exploring Core Concepts and Programming Fundamentals C# .NET: Exploring Core Concepts and Programming Fundamentals Apr 10, 2025 am 09:32 AM

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

From Web to Desktop: The Versatility of C# .NET From Web to Desktop: The Versatility of C# .NET Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

The Continued Relevance of C# .NET: A Look at Current Usage The Continued Relevance of C# .NET: A Look at Current Usage Apr 16, 2025 am 12:07 AM

C#.NET is still important because it provides powerful tools and libraries that support multiple application development. 1) C# combines .NET framework to make development efficient and convenient. 2) C#'s type safety and garbage collection mechanism enhance its advantages. 3) .NET provides a cross-platform running environment and rich APIs, improving development flexibility.

Advanced C# .NET Tutorial: Ace Your Next Senior Developer Interview Advanced C# .NET Tutorial: Ace Your Next Senior Developer Interview Apr 08, 2025 am 12:06 AM

Interview with C# senior developer requires mastering core knowledge such as asynchronous programming, LINQ, and internal working principles of .NET frameworks. 1. Asynchronous programming simplifies operations through async and await to improve application responsiveness. 2.LINQ operates data in SQL style and pay attention to performance. 3. The CLR of the NET framework manages memory, and garbage collection needs to be used with caution.

Is C# .NET Right for You? Evaluating its Applicability Is C# .NET Right for You? Evaluating its Applicability Apr 13, 2025 am 12:03 AM

C#.NETissuitableforenterprise-levelapplicationswithintheMicrosoftecosystemduetoitsstrongtyping,richlibraries,androbustperformance.However,itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical,wherelanguageslikeRustorGomightbepreferable.

C# .NET Security Best Practices: Preventing Common Vulnerabilities C# .NET Security Best Practices: Preventing Common Vulnerabilities Apr 05, 2025 am 12:01 AM

Security best practices for C# and .NET include input verification, output encoding, exception handling, as well as authentication and authorization. 1) Use regular expressions or built-in methods to verify input to prevent malicious data from entering the system. 2) Output encoding to prevent XSS attacks, use the HttpUtility.HtmlEncode method. 3) Exception handling avoids information leakage, records errors but does not return detailed information to the user. 4) Use ASP.NETIdentity and Claims-based authorization to protect applications from unauthorized access.

See all articles