WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

ASP.NET伪静态实现

Posted on   WebEnh  阅读(561)  评论(0编辑  收藏  举报

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,可以看到如下的效果:

 

 

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多