`
niunan
  • 浏览: 721426 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

用IHttpModule做自己的URL重写

    博客分类:
  • .NET
阅读更多
用网上下载的UrlRewriteModule URL重写组件发现有时在打开页面的时候会出错(错误一时没有记下来·!!),但是再刷新页面的时候又好了,于是想自己写一个URL重写的,以得以前看视频的时候说是要URL重写的话可在Module中写,上网查了一下相关的资料,写了一个简单的Module来进行URL重写,记录如下,以备后用:
web.config的配置:
<httpModules>
        <!-- 测试 -->
        <add name="ModuleTest" type="ModouleTest"/>
        <!-- 测试结束 -->
</httpModules>


ModouleTest.cs
/*
 * 作者: 牛腩
 * 创建时间: 2009-9-2 9:59:30
 * Email: 164423073@qq.com
 * 说明: URL重写Module
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text.RegularExpressions;

/// <summary>
///URL重写Module
/// </summary>
public class ModouleTest : IHttpModule
{
    public ModouleTest()
    {

    }

    #region IHttpModule 成员

    void IHttpModule.Dispose()
    {
        throw new NotImplementedException();
    }

    void IHttpModule.Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(Application_BeginRequest);
    }

    #endregion

    private void Application_BeginRequest(object sender, EventArgs e)
    {

        HttpApplication application = (HttpApplication)sender;

        HttpRequest request = application.Request;

        HttpResponse response = application.Response;

        HttpServerUtility server = application.Server;

        string url = request.Url.ToString();

        /*
         * 只要输入的地址中有niunantest/的都会跳转并把/后头的字符传过去,如:
         * http://localhost:3212/ModuleTest/niunantest/43242
         * http://localhost:3212/ModuleTest/niunantest/abd3345
         * http://localhost:3212/ModuleTest/niunantest/牛腩
         */
        Regex reg = new Regex(@"niunantest/(\w+)");  

        if (reg.IsMatch(url))
        {
            Match m = reg.Match(url);
            string value = m.Groups[1].Value;
          //response.Write("匹配的值:" + value + "<br>");
            server.Transfer("~/default.aspx?str=" + value); // 使用response.Redirect会让地址栏中的地址改变      
        }
    }
}


个人理解,其实module就相当于jsp中的过滤器(如果有的话),每个页面在呈现之前必须得先经过module,那么我们就可以在module中判断当前的URL地址,如果符合某个格式的就可以跳转到对应的页面,在这里用到了server.Transfer跳转是为了不让地址栏中的地址改变。
  • Module.zip (7.1 KB)
  • 描述: 源文件下载
  • 下载次数: 33
分享到:
评论

相关推荐

    自定义IHttpModule实现URL重写示例代码

    这是本人博客上《用自定义IHttpModule实现URL重写》一文的示例代码,如果有未尽之处或者不明白之处请到本人博客上查看,网址是:http://blog.csdn.net/zhoufoxcn/archive/2009/07/14/4346356.aspx

    URL重写实例,无二级重写

    本实例主要关注在没有使用二级目录的情况下的URL重写。 在ASP.NET中,URL重写通常通过`HttpModule`实现,如`UrlRewriteModule`。VS2008版本的Visual Studio中,我们可以创建一个新的项目,然后添加自定义的...

    C#自己写的url重写

    在.NET框架中,URL重写是一项重要的技术,它允许开发者隐藏实际的URL结构,提供更加友好、可读性更强的网址给用户。这通常通过IIS(Internet Information Services)的URL重写模块或者自定义的HTTP模块来实现。在本...

    vs2003url重写代码

    VS2003不内置URL重写功能,但我们可以使用第三方库如`UrlRewrite.dll`或者自定义HttpModule来实现。 **实现步骤** 1. **安装UrlRewrite组件**:首先,你需要获取一个支持.NET Framework 1.1或2.0的URL重写组件,...

    asp.net 2.0简单的入门Url重写

    这些文件可以帮助我们了解如何在实际应用中部署和使用URL重写功能。 通过URL重写,我们可以隐藏应用程序的实际结构,使外部用户只看到我们希望展示的URL形式。这对于提高用户体验、增强网站的专业形象以及提升搜索...

    URL重写

    URL重写是Web开发中的一个重要概念,特别是在使用ASP.NET框架时。它允许开发者改变网站的URL结构,使得URL更加用户友好、搜索引擎优化(SEO)以及更符合网站的逻辑架构。在C#中,URL重写通常通过HttpModule来实现,...

    Asp.NET 中的Url重写 以及页面静态化

    在ASP.NET开发中,URL重写和页面静态化是两种重要的技术,它们对提升网站性能、优化搜索引擎排名以及保持良好的用户体验具有显著作用。下面将详细解释这两种技术,并结合HttpModuleDemo示例进行深入探讨。 一、URL...

    HttpModule重写机制

    4. **URL重写**:在BeginRequest事件中,重写模块检查请求的URL,如果满足重写规则,就修改请求路径,使其指向新的资源。 5. **后续处理**:经过重写后的请求继续在模块链中传递,其他HttpModule可以进一步处理,如...

    用IHttpModule解决输入中文地址乱码问题

    具体来说,可以通过在请求开始时重写路径(RewritePath),使用正确的编码解码URL,确保其正确性。 ### 实现步骤 1. **创建一个IHttpModule类**:首先,需要创建一个实现了IHttpModule接口的类,比如`HookModule`...

    asp.net 2.0 中的URL重写以及urlMappings问题

    示例代码展示了如何通过创建一个实现了`IHttpModule`接口的类来实现URL重写: ```csharp public class ReWriteModule : IHttpModule { public void Init(HttpApplication context) { context.BeginRequest += ...

    UrlRewritingNet

    ASP.NET 2.0 中实现URL重写有很多方法,如:Global.asax中捕获用Application_BeginRequest请求,再用HttpContext类的Rewrite方法或Server.Transfer方法实现重写;自己实现IHttpModule实现重写;还有的利用服务器的...

    C#写的URL REWRITE

    1. **IIS URL重写模块**:IIS提供了一个内置的URL重写模块,可以配合C#代码使用。这个模块基于配置文件(web.config)中的规则来执行URL重写。开发者可以通过添加XML规则来定义URL重写逻辑。例如,将`/article.aspx?...

    IHttpModule应用

    除了记录访问信息,IHttpModule还可以用于实现其他功能,如身份验证、URL重写、缓存控制、性能监控等。通过巧妙地利用IHttpModule,开发者可以对ASP.NET应用程序进行深度定制,以满足特定的业务需求。 总结: ...

    地址栏重写

    一般来说,要显示一些...当时曾经做过一个J2EE的网站放在虚拟主机上要对Tomcat做配置才能启用数据库连接池,但是虚拟主机提供商不提供这种服务),其实在ASP.NET中可以通过自定义IHttpModule就可以实现URL地址重写。

    asp.net下用url重写URLReWriter实现任意二级域名的方法第1/2页

    在***环境下,使用URL重写是实现二级域名映射的一种常用技术手段。URL重写的目的在于将用户友好的域名(例如***)转换成服务器可识别的带参数的URL(例如***),从而达到隐藏实际处理逻辑、提升用户体验的目的。以下...

    在ASP.NET中实现Url Rewriting (三)

    BeginRequest事件是最早触发的,这使得URL重写可以在其他内嵌模块运行前完成,确保不会影响到后续的身份验证和授权过程。例如,如果在AuthenticateRequest事件中执行URL重写,可能会导致身份验证模块无法正确识别...

Global site tag (gtag.js) - Google Analytics