支持正则表达式的UrlMapping(ASP.NET2.0)
来源:互联网 发布:java拼接html字符串 编辑:程序博客网 时间:2024/05/21 06:41
<?xml version="1.0"?>
<configuration>
<system.web>
<urlMappings>
<add url="~/2006/07" mappedUrl="~/Month.ASPx?year=2006&month=01"/>
<add url="~/2006/08" mappedUrl="~/Month.ASPx?year=2006&month=02"/>
</urlMappings>
<compilation debug="true"/>
</system.web>
</configuration>
这个配置可以使ASP.NET程序在ASP.NET Development Server(就是建ASP.NET项目时选文件系统)直接支持UrlMapping,不过它有几个不足之处:
1、只能映射固定的地址,所以只能一个地址一个地址的配置
2、ASP.NET Development Server中可以不用配什么别的地方,在IIS中受请求响应模型所限,估计还是要在IIS中设映射。这样的话,反而搞得我到处找资料,看怎么实现在ASP.NET Development Server设置映射,得到的结果是不行。
针对于UrlMapping的不支持正则表达式的缺陷,我做了个支持正则表达式的UrlMapping,可惜由于UrlMapping是由HttpApplication调用的,而HttpApplication是Internal的,不能对它做什么动作,所以实现的东东和UrlMapping相比做在Web.config中多做个<Section>
文件下载
(下载文件中包括RegexUrlMapping组件和一个示例ASP.NET,注意ASP.NET程序需部署在IIS中,并且要设置映射,方法是右击虚拟目录,选属性,选配置,在通配符应用程序映射中添加c:/windows/microsoft.NET/framework/v2.0.50727/ASPNET_isapi.dll的引用,并去掉确认文件是否存在的钩,这里是为了偷懒才用通配符全部映射到ASP.NET2.0的ISAPI,实际开发中最好酌情添加具体一点的映射)
Web.config中的配置举例如下:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="RegexUrlMappings" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingsSection,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</configSections>
<RegexUrlMappings enabled="true" rebaseClientPath="true">
<add url="(/d )$" mappedUrl="default.ASPx?id=$1"/>
<add url="(?<=/)(?<id>[a-z] )$" mappedUrl="default.ASPx?id=${id}" />
<add url="/$" mappedUrl="/default.ASPx?id=0"/>
</RegexUrlMappings>
<system.web>
<httpModules>
<add name="RegexUrlMappingModule" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingModule,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</httpModules>
<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>
其中RegexUrlMapping的属性enabled用于打开和关闭映射,rebaseClientPath参见HttpContext.RewritePath中rebaseClientPath参数
<add>用于添加映射规则,url为匹配路径的正则表达式pattern,mappedUrl是替换规则,用法参见Regex.Replace方法
上例中,第一个add在url中用括号定义了组1,所以在后面引用$1
第二个add在url中用(?<id>)定义了组id,后面用${id}引用了这个组
第三个是固定字符串替换
呵呵,看来正则表达式还是很重要滴~~
http://www.cnblogs.com/thinhunan/archive/2006/08/22/regexurlmapping.html
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>- 支持正则表达式的UrlMapping(ASP.NET2.0)
- 支持正则表达式的UrlMapping(ASP.NET2.0)
- 支持正则表达式的UrlMapping(ASP.NET2.0)
- .NET2.0中常用的正则表达式
- 正则表达式 —— 动态生成Html asp.net2.0
- 带正则表达式编辑器的RegularExpressionValidator[ASP.NET2.0 Server Control]
- .NET2.0正则表达式搜魂者
- .NET2.0隐形的翅膀,正则表达式搜魂者【月儿原创】
- .NET2.0隐形的翅膀,正则表达式搜魂者
- .NET2.0隐形的翅膀,正则表达式搜魂者
- .NET2.0隐形的翅膀,正则表达式搜魂者【月儿原创】
- .NET2.0隐形的翅膀,正则表达式搜魂者
- .NET2.0隐形的翅膀,正则表达式搜魂者
- NET2.0隐形的翅膀,正则表达式搜魂者【月儿原创】
- .NET2.0隐形的翅膀,正则表达式搜魂者
- .NET2.0隐形的翅膀,正则表达式搜魂者
- .NET2.0隐形的翅膀,正则表达式搜魂者
- .NET2.0隐形的翅膀,正则表达式搜魂者
- 应用lucene.net进行搜索测试
- 在VisualStudio2005和ASP.NET2.0中使用强类型数据存取
- .net2.0中新增的nullable类型
- 收藏一段小的.net下的验证码片段
- asp.net2.0小TIPS两则
- 支持正则表达式的UrlMapping(ASP.NET2.0)
- ASP.NET中为DataGrid添加单选框
- .Net下几种日志管理方法
- ASP.NET2.0登陆控件的使用(常见的三种方法)
- ASP.NET2.0X64的奇怪问题
- ASP.NET2.0-EnterKey-DefaultSubmitButton
- 怎样从ASP.NET2.0中读取连接字符串的设置
- 一个极有可能引发ExecutionEngineException的情况
- ASP.NET服务器控件PleaseWaitButton[翻译]