[ASP.net]ASP.net的RUL重写
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&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重写相关推荐
- 如何实现Asp与Asp.Net共享Session
在.net中,Session的存储机制已经与Asp的存储机制不一样,虽然可以在同一个IIS下同时运行asp与aspx,但是它们之间不能传递Session. 之前大批系统应用到了asp,在升级过程中 ...
- 使用Installshield制作asp,asp.net应用的安装程序
在使用asp,asp.net编写Web应用时,最大的烦恼莫过于程序的分发的部署,由于面向的最终用户,所以程序的安装的过程必须要简单,方便和快捷. 下面提供了Installshield的脚本,改脚本功能 ...
- 基于Web Services建立Asp与Asp.Net之间Session数据桥的应用研究
本文的目的在于提供一种可行的解决方案通过Web Service技术来整合和管理现有的Asp程序到Asp.Net. 此应用解决方案尽可能从实际出发以迭代更新方式的策略把Asp Web服务器内存中的当前S ...
- 如何在传统 ASP 和 ASP.NET 之间共享会话状态
如何在传统 ASP 和 ASP.NET 之间共享会话状态 发布日期 : 4/1/2004| 更新日期 : 4/1/2004 Billy Yuen Microsoft Corporation 2003 ...
- ASP与ASP.NET的区别
师姐开始学习asp了,昨天问了我asp与asp.net的区别,结果没回答好....太丢人了... ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应 ...
- ajax html成功 asp,AJAX ASP
AJAX ASP AJAX 被用于创建交互性更强的应用程序. AJAX ASP 实例 下面的实例将演示当用户在输入框中键入字符时,网页如何与 Web 服务器进行通信: 实例 Start typing ...
- 没完没了的Cookie,读懂asp.net,asp等web编程中的cookies
在我刚学会一点asp编程时就知道cookie了,当时照着书上的代码一通输入运行后,一切OK,就这样我自以为掌握了cookie,学javascript照样是一通代码运行成功,cookie到此为止应该是山 ...
- 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 ...
- (转)asp和asp.net区别
ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能 ...
最新文章
- windows XP下Python2.7包管理工具安装-setuptool,pip、distribute、nose、virtualenv
- ansible自动化运维(一)——基本架构简介
- 大约 Apple Metal API 一些想法
- 主成分分析(PCA)——以2维图像为例
- win7怎么桌面能不能设置html,win7系统怎么格式化
- 基础 - 结构体大小计算
- 下载丨7月数据库技术通讯:LINUX OS配置问题导致数据库重启
- html加css绘制oprea的logo,拾人牙慧 – CSS3实现Opera浏览器的logo
- 库ppt演示 python_python操作Power Point:PPT幻灯片布局基础
- 【Kafka】Exiting due to: org/apache/kafka/common/protocol/SecurityProtocol
- 服务器tomcat/mysql的一些有关命令
- Win11软件兼容性怎么样?
- 通达信接口的开发工具?
- 第一款低代码应用平台搭建的设备管理系统
- 数据结构——图——拓扑排序算法
- 给惠普735g5 装Win10+Ubuntu 16.04双系统
- Windows系統修改MAC地址的方法
- 斯蒂文斯理工学院计算机科学硕士,斯蒂文斯理工学院计算机科学硕士专业
- php 进程通信系列 (三)信号量
- 激光器长导通时间的驱动电路
热门文章
- 切换终端_首款搭载鸿蒙系统的终端来了:配自研芯片,能跟手机无缝切换
- 7.使用reserve避免不必要的内存分配
- Tensorflow保存模型详解(进阶版二):如何保存最近的.ckpt文件 及 如何分开保存.ckpt数据文件和.meta图文件
- 关于list 数据类型 和 ndarray 数据类型获取索引的小坑
- facenet + Mtcnn 实现人脸识别(实现步骤)
- 关于混合使用智能指针和内置指针的自己的问题和自己的见解(问题搜集中)这个帖子有待解决的问题
- Linux学习-漫游根目录和/usr目录
- 8086汇编-实验1、2-debug调试命令
- Eclipse 安装Gradle插件
- 证券回购市场repo market