ASP.net的RUL重写<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

有关于URL的重写,本文也只是拿来主意。相继有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的ISAPI设置。

娜列下来,实现方法也都很简单。

方法一:MS组件

这里也不用详解了,相关请看:

http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx

用法很简单,只需要把组件URLRewriter.dll拷到应用程序的bin目录下,然后在web.config下加入如下代码:

在<configuration></configuration>中加入:

<configSections>

<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

</configSections>

<RewriterConfig>

<Rules>

<RewriterRule>

<LookFor>~/(\d{4})/(\d{2})/Default\.aspx</LookFor>

<SendTo>~/Default.aspx?ID=$1</SendTo>

</RewriterRule>

</Rules>

</RewriterConfig>

然后在<system.web></system.web>中加入:

<httpHandlers>

<add verb="*" path="*.aspx"

type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

</httpHandlers>

最后在地址栏上键入:http://localhost/Test/2004/12/News.aspx

效果出来了。

上面的<LookFor>~/(\d{4})/(\d{2})/News\.aspx</LookFor>这句这正则表达式URL,即被重写的URL,而<SendTo>~/Default.aspx?ID=$1</SendTo>这一句为原始URL地址。其中的$1为第一个正则表达式值(上面例子为:2004),以此类推,第二个即为$2

方法二:Application_BeginRequest()

在应用程序中新建一个XML文件,文件内容为:文件名ReWriter.config

<?xml version="1.0" encoding="utf-8" ?>

<ReWriterUrls>

<rule>

<old>(.*)/News/(\d{4})/Default\.aspx</old>

<new>../../Default.aspx?id=$2&amp;type=$3</new>

</rule>

</ReWriterUrls>

在Global.asax文件中的Application_BeginRequest(Object sender, EventArgs e)加入代码:

try

{

string path=Server.MapPath("~/ReWriter.config");

XPathDocument myXPathDocument = new XPathDocument(path);

XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();

XPathNodeIterator myXPathNodeIterator =  myXPathNavigator.Select ("//rule");

System.Text.RegularExpressions.Regex oReg;

string ReWriteUrl;

while (myXPathNodeIterator.MoveNext())

{

//oReg=new Regex(oNode.SelectSingleNode("url/text()").Value);

XPathNavigator nav2 = myXPathNodeIterator.Current.Clone();

string oldString="",newString="";

XPathNodeIterator it2 = nav2.Select("old");

while(it2.MoveNext())

{

oldString = it2.Current.Value;

break;

}

it2 = nav2.Select("new");

while(it2.MoveNext())

{

newString = it2.Current.Value;

break;

}

if(oldString != "" &&  newString != "")

{

oReg = new System.Text.RegularExpressions.Regex(oldString);

if(oReg.IsMatch(Request.Url.ToString()))

{

ReWriteUrl = oReg.Replace(Request.Url.ToString(),newString);

HttpContext.Current.RewritePath(ReWriteUrl);

break;

}

}

}

}

catch

{

}

最后在地址栏上键入:http://localhost/Test/News/2004/Default.aspx

效果出来了。

转载于:https://www.cnblogs.com/HD/archive/2005/06/20/177633.html

[ASP.net]ASP.net的RUL重写相关推荐

  1. 如何实现Asp与Asp.Net共享Session

    在.net中,Session的存储机制已经与Asp的存储机制不一样,虽然可以在同一个IIS下同时运行asp与aspx,但是它们之间不能传递Session.   之前大批系统应用到了asp,在升级过程中 ...

  2. 使用Installshield制作asp,asp.net应用的安装程序

    在使用asp,asp.net编写Web应用时,最大的烦恼莫过于程序的分发的部署,由于面向的最终用户,所以程序的安装的过程必须要简单,方便和快捷. 下面提供了Installshield的脚本,改脚本功能 ...

  3. 基于Web Services建立Asp与Asp.Net之间Session数据桥的应用研究

    本文的目的在于提供一种可行的解决方案通过Web Service技术来整合和管理现有的Asp程序到Asp.Net. 此应用解决方案尽可能从实际出发以迭代更新方式的策略把Asp Web服务器内存中的当前S ...

  4. 如何在传统 ASP 和 ASP.NET 之间共享会话状态

    如何在传统 ASP 和 ASP.NET 之间共享会话状态 发布日期 : 4/1/2004| 更新日期 : 4/1/2004 Billy Yuen Microsoft Corporation 2003 ...

  5. ASP与ASP.NET的区别

    师姐开始学习asp了,昨天问了我asp与asp.net的区别,结果没回答好....太丢人了... ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应 ...

  6. ajax html成功 asp,AJAX ASP

    AJAX ASP AJAX 被用于创建交互性更强的应用程序. AJAX ASP 实例 下面的实例将演示当用户在输入框中键入字符时,网页如何与 Web 服务器进行通信: 实例 Start typing ...

  7. 没完没了的Cookie,读懂asp.net,asp等web编程中的cookies

    在我刚学会一点asp编程时就知道cookie了,当时照着书上的代码一通输入运行后,一切OK,就这样我自以为掌握了cookie,学javascript照样是一通代码运行成功,cookie到此为止应该是山 ...

  8. 1月4日链接篇:ASP.NET, ASP.NET AJAX, ASP.NET MVC, Visual Studio, IIS7

    [原文地址]Jan 4th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Visual Studio, IIS7 [原文发表日期] Friday, Januar ...

  9. (转)asp和asp.net区别

    ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能 ...

最新文章

  1. windows XP下Python2.7包管理工具安装-setuptool,pip、distribute、nose、virtualenv
  2. ansible自动化运维(一)——基本架构简介
  3. 大约 Apple Metal API 一些想法
  4. 主成分分析(PCA)——以2维图像为例
  5. win7怎么桌面能不能设置html,win7系统怎么格式化
  6. 基础 - 结构体大小计算
  7. 下载丨7月数据库技术通讯:LINUX OS配置问题导致数据库重启
  8. html加css绘制oprea的logo,拾人牙慧 – CSS3实现Opera浏览器的logo
  9. 库ppt演示 python_python操作Power Point:PPT幻灯片布局基础
  10. 【Kafka】Exiting due to: org/apache/kafka/common/protocol/SecurityProtocol
  11. 服务器tomcat/mysql的一些有关命令
  12. Win11软件兼容性怎么样?
  13. 通达信接口的开发工具?
  14. 第一款低代码应用平台搭建的设备管理系统
  15. 数据结构——图——拓扑排序算法
  16. 给惠普735g5 装Win10+Ubuntu 16.04双系统
  17. Windows系統修改MAC地址的方法
  18. 斯蒂文斯理工学院计算机科学硕士,斯蒂文斯理工学院计算机科学硕士专业
  19. php 进程通信系列 (三)信号量
  20. 激光器长导通时间的驱动电路

热门文章

  1. 切换终端_首款搭载鸿蒙系统的终端来了:配自研芯片,能跟手机无缝切换
  2. 7.使用reserve避免不必要的内存分配
  3. Tensorflow保存模型详解(进阶版二):如何保存最近的.ckpt文件 及 如何分开保存.ckpt数据文件和.meta图文件
  4. 关于list 数据类型 和 ndarray 数据类型获取索引的小坑
  5. facenet + Mtcnn 实现人脸识别(实现步骤)
  6. 关于混合使用智能指针和内置指针的自己的问题和自己的见解(问题搜集中)这个帖子有待解决的问题
  7. Linux学习-漫游根目录和/usr目录
  8. 8086汇编-实验1、2-debug调试命令
  9. Eclipse 安装Gradle插件
  10. 证券回购市场repo market