zoukankan      html  css  js  c++  java
  • ASP.NET伪静态实现

    ASP.NET伪静态实现

     

    在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢?

    例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index-1.html。那如何实现?

    思路如下:利用HttpModule来实现。

     

    1.新建文件,URLHttpModel.cs,并实现IHttpModule接口。代码如下:

    [csharp] view plain copy
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Text.RegularExpressions;  
    5. using System.Web;  
    6.   
    7. namespace Web.HttpModel.Demo  
    8. {  
    9.     public class URLHttpModel : IHttpModule  
    10.     {  
    11.         public void Init(HttpApplication context)  
    12.         {  
    13.             context.BeginRequest += Context_BeginRequest;  
    14.         }  
    15.   
    16.         private void Context_BeginRequest(object sender, EventArgs e)  
    17.         {  
    18.             HttpApplication app = (HttpApplication) sender;  
    19.             HttpContext context = app.Context;  
    20.             string requestPage = context.Request.Path.ToLower();  
    21.             var newPattern = "/index-(\d+).html";  
    22.             if (Regex.IsMatch(requestPage, $"^{newPattern}$", RegexOptions.None | RegexOptions.IgnoreCase))  
    23.             {  
    24.                 string queryString = Regex.Replace(requestPage, newPattern, "id=$1", RegexOptions.None | RegexOptions.IgnoreCase);  
    25.                 context.RewritePath("/Default.aspx", string.Empty, queryString);  
    26.             }  
    27.         }  
    28.   
    29.         public void Dispose()  
    30.         {  
    31.               
    32.         }  
    33.     }  
    34. }  

    2.然后在web.config文件中,配置此Modeule,代码如下:

    [csharp] view plain copy
     
    1. <httpModules>  
    2.       <add name="URLModel" type="Web.HttpModel.Demo.URLHttpModel,Web.HttpModel.Demo"/>  
    3. </httpModules>  

    3,然后运行项目,输入如下地址,/index-1.html,可以看到如下的效果:

  • 相关阅读:
    用存储过程实现二进制字段的更新
    在Google 上搜书的方法 (转)
    Oracle开发中,关于查询的一个问题
    北京公司招聘 .net开发人员
    UIAlertView的使用方法
    FMEFB开始上传
    应用中的安全管理方案
    使用NHibernate时需要考虑的另一个问题
    .net使用Com组件的问题
    使用NHibernate时,如何提高访问Oracle数据库(ODP.net)的性能
  • 原文地址:https://www.cnblogs.com/webenh/p/6206218.html
Copyright © 2011-2022 走看看