`
njmnjx
  • 浏览: 231985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpModules应用

阅读更多
<!--web.config-->
<?xml version="1.0"?>
<!-- 
    注意: 除了手动编辑此文件以外,您还可以使用 
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在 
    machine.config.comments 中,该文件通常位于 
    \Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
	<appSettings/>
	<connectionStrings/>
	<system.web>
		<!-- 
            设置 compilation debug="true" 可将调试符号插入
            已编译的页面中。但由于这会 
            影响性能,因此只在开发过程中将此值 
            设置为 true。
        -->
		<compilation debug="true">
		</compilation>
		<!--
            通过 <authentication> 节可以配置 ASP.NET 用来 
            识别进入用户的
            安全身份验证模式。 
        -->
		<authentication mode="Windows"/>
		<!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
		
		<!--这部分为实际作用区域-->
		<httpModules>
			<add name="ModuleTest" type="TestHttpModule"/>
		</httpModules>
		<!--这部分为实际作用区域结束-->
	</system.web>
</configuration>


//添加类代码
using System;
using System.Collections.Generic;
using System.Web;
using System.Text.RegularExpressions;

/// <summary>
/// 此一类的使用要配合在Web.Config中配置如下内容(<system.web>节点内)
///<httpModules>
///		<add name="ModuleTest" type="TestHttpModule"/>
///</httpModules>
/// </summary>
public class TestHttpModule:IHttpModule 
{
    void IHttpModule.Dispose()
    {
        //throw new NotImplementedException();
    }

    void IHttpModule.Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(FunMethod);    //注册方法
    }

    private void FunMethod(object sender, EventArgs e)          //处理
    {

        HttpApplication application = (HttpApplication)sender;

        HttpContext context = application.Context;

        HttpRequest request = application.Request;

        HttpResponse response = application.Response;

        //response.Write("可以直接输出内容");

        string _url = request.Url.ToString();

        //匹配跳转
        if (Regex.IsMatch(_url, "^http://localhost:10000/httpModulesTest/\\d+", RegexOptions.IgnoreCase))
        {
            Regex reg = new Regex("^http://localhost:10000/httpModulesTest/(\\d+)", RegexOptions.IgnoreCase);
            Match m = reg.Match(_url);
            if (m.Success)
            {
                string mId = m.Groups[1].ToString();
                response.Redirect("http://www.baidu.com?id=" + mId);
            }
        }
    }
    
}




原码:
http://dl.iteye.com/topics/download/c5335581-d822-3210-9497-b7720f68bd0d
分享到:
评论
1 楼 donkey526485268 2013-10-18  
 

相关推荐

Global site tag (gtag.js) - Google Analytics