溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于HttpModule擴(kuò)展

發(fā)布時(shí)間:2020-06-30 11:14:06 來源:網(wǎng)絡(luò) 閱讀:642 作者:1473348968 欄目:編程語(yǔ)言

基于HttpModule擴(kuò)展

一般處理頁(yè)面就是HttpHandler區(qū)域

-------------------------------封裝類庫(kù)

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
/*
 **************************
 * 案例功能:
 * 1,URL地址欄阻止(參數(shù)為aspx則跳轉(zhuǎn)到錯(cuò)誤頁(yè)面)
 * 2,F(xiàn)orm表達(dá)阻止(表單的值為aspx則彈出錯(cuò)誤)
 * 3,阻止使用session
 **************************
 */
namespace HttpModuleDome
{
    public class MyHttpModule : IHttpModule
    {
        #region IHttpModule 成員
        public void Dispose()
        {
        }
        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
            context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
        }
        //開始請(qǐng)求階段
        void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            HttpContext context = application.Context;
            //Url地址欄阻止
            if (context.Request.QueryString.Count > 0)
            {
                for (int i = 0; i < context.Request.QueryString.Count; i++)
                {
                    if (context.Request.QueryString[context.Request.QueryString.Keys[i]] == "aspx")
                    {
                        context.Response.Redirect("http://www.baidu.com");
                        context.Response.End();
                    }
                }
            }
            //Form表單阻止
            if (context.Request.Form.Count > 0)
            {
                for (int i = 0; i < context.Request.Form.Count; i++)
                {
                    if (context.Request.Form[context.Request.Form.Keys[i]] == "aspx")
                    {
                        context.Response.Write("<script>alert('錯(cuò)誤');location.href='" + context.Request.RawUrl + "'</script>");
                        context.Response.End();
                    }
                } 
            }
        }
        //進(jìn)入了HttpHandler區(qū)域,已經(jīng)有了session
        void context_AcquireRequestState(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;//Global.asax的基類
            HttpContext context = application.Context;//封裝了ASP.NET要處理的單次請(qǐng)求的所有信息
            if (context.Session.Count > 0)
            {
                //context.Response.End();//直接跳過AcquireRequestState之后的請(qǐng)求,結(jié)束請(qǐng)求
                
            }
        }
        #endregion
    }
}

 ------------------------------------web.config里面引用

 <system.web>  
 <httpModules>

   <add name="MyhttpModule" type="HttpModuleDome.MyHttpModule,HttpModuleDome"/>

  </httpModules>

 </system.web>

 ------------------------------------也可以在Global.asax文件里面寫

<%@ Application Language="C#" %>
<script runat="server">
    /*
     *格式:以Application_開頭
     */
    //開始請(qǐng)求階段
    void Application_BeginRequest(object sender, EventArgs e)
    {
        // 在應(yīng)用程序啟動(dòng)時(shí)運(yùn)行的代碼
    }
    
    
    void Application_Start(object sender, EventArgs e) 
    {
        // 在應(yīng)用程序啟動(dòng)時(shí)運(yùn)行的代碼
    }
    
    void Application_End(object sender, EventArgs e) 
    {
        //  在應(yīng)用程序關(guān)閉時(shí)運(yùn)行的代碼
    }
        
    void Application_Error(object sender, EventArgs e) 
    { 
        // 在出現(xiàn)未處理的錯(cuò)誤時(shí)運(yùn)行的代碼
    }
    void Session_Start(object sender, EventArgs e) 
    {
        // 在新會(huì)話啟動(dòng)時(shí)運(yùn)行的代碼
    }
    void Session_End(object sender, EventArgs e) 
    {
        // 在會(huì)話結(jié)束時(shí)運(yùn)行的代碼。 
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式設(shè)置為
        // InProc 時(shí),才會(huì)引發(fā) Session_End 事件。如果會(huì)話模式設(shè)置為 StateServer 
        // 或 SQLServer,則不會(huì)引發(fā)該事件。
    }
       
</script>

基于HttpModule擴(kuò)展

基于HttpModule擴(kuò)展

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI