模块初始化实现地址的伪静态

王朝学院·作者佚名  2016-05-21
窄屏简体版  字體: 小  |  中  |  大  |  超大  

模块初始化实现地址的伪静态在web.config配置文件<system.web> </system.web>中写代码 (在2.0版本中)(在3.5版本中有配置文件只需把<add />中的内容换掉)

<httpModules > <add name="httpmodule" type="HttpModule"/> </httpModules>

在App_Code文件中创建HttpModule 类文件 然后继承接口 IHttpModule 并实现接口

public class HttpModule:IHttpModule{ public void Dispose() { throw new NotImplementedException(); } public void Init(Httpapplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); //在asp.net响应请求时的第一个事件 } // 地址2: http://localhost:3087/weijingtai/1.aspx //伪静态页面 // 地址1: http://localhost:3087/weijingtai/News.aspx?id=1 //此事件的作用是: //将连接地址 1.aspx 变为 News.aspx?id=1 void context_BeginRequest(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication; HttpContext context = application.Context; //获取当前请求的http信息 string filepath = context.Request.RawUrl; //获取当前请求的原始url int i = filepath.LastIndexOf('/'); //得到文件名开始的索引 string fileName = filepath.Substring(i); Regex rg = new Regex(@"/(\d+).aspx"); //创建正则表达式 if (rg.IsMatch(fileName)) { Match match = rg.Match(fileName); string id = match.Groups[1].Value; //获取文件名 context.RewritePath("News.aspx?id="+id); //拼接地址 } }}

例子:<li><a href="News.aspx?id=1">这是第一条新闻</a></li> 连接1<li><a href="1.aspx">这是第一条新闻</a></li> 连接2连接1 用 地址1 请求响应 在响应前经过context_BeginRequest事件 由于不匹配正则表达式 所以事件没起作用 然后响应页面做出回应 if (Request.QueryString["id"] != null) { Response.Write("这是第" + Request.QueryString["id"] + "条新闻"); }回发给请求页面连接2 用 地址2 请求响应 在响应前经过context_BeginRequest事件 由于匹配正则表达式 所以将地址2变为地址1 然后响应页面做出回应 if (Request.QueryString["id"] != null) { Response.Write("这是第" + Request.QueryString["id"] + "条新闻"); }回发给请求页面

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航