首页 > 代码库 > ASP.NET伪静态实现
ASP.NET伪静态实现
在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢?
例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index-1.html。那如何实现?
思路如下:利用HttpModule来实现。
1.新建文件,URLHttpModel.cs,并实现IHttpModule接口。代码如下:
[csharp] view plain copy- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text.RegularExpressions;
- using System.Web;
- namespace Web.HttpModel.Demo
- {
- public class URLHttpModel : IHttpModule
- {
- public void Init(HttpApplication context)
- {
- context.BeginRequest += Context_BeginRequest;
- }
- private void Context_BeginRequest(object sender, EventArgs e)
- {
- HttpApplication app = (HttpApplication) sender;
- HttpContext context = app.Context;
- string requestPage = context.Request.Path.ToLower();
- var newPattern = "/index-(\\d+).html";
- if (Regex.IsMatch(requestPage, $"^{newPattern}$", RegexOptions.None | RegexOptions.IgnoreCase))
- {
- string queryString = Regex.Replace(requestPage, newPattern, "id=$1", RegexOptions.None | RegexOptions.IgnoreCase);
- context.RewritePath("/Default.aspx", string.Empty, queryString);
- }
- }
- public void Dispose()
- {
- }
- }
- }
2.然后在web.config文件中,配置此Modeule,代码如下:
[csharp] view plain copy- <httpModules>
- <add name="URLModel" type="Web.HttpModel.Demo.URLHttpModel,Web.HttpModel.Demo"/>
- </httpModules>
3,然后运行项目,输入如下地址,/index-1.html,可以看到如下的效果:
ASP.NET伪静态实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。