zoukankan      html  css  js  c++  java
  • 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,可以看到如下的效果:

     
     
  • 相关阅读:
    SharePoint 2013中的Index Partition的一个小问题
    SharePoint 2013中, 默认Index文件的位置
    Visual Studio Test Project的一个小问题
    HyperV最佳实践
    测试环境中的一个HyperV的选项设置
    什么是SharePoint 2013中的Shredded Storage?
    SharePoint的数据库性能需要注意的一点
    记录HyperV中挪动虚拟机的一次实践
    SharePoint 2013上一台机器可以有多个Crawl Component么?
    SharePoint Client Object Model的一个小例子
  • 原文地址:https://www.cnblogs.com/jjg0519/p/6337156.html
Copyright © 2011-2022 走看看