UrlRewriteModule类工作流程
初始化
















读取配置





















配置文件结构













例如原来删除ID=2的留言记录URL路径为http://localhost/guestbook/delete.castle?id=2。现在可以写成http://localhost/guestbook/2/delete.castle
分析路径进行













该方法条用非常频繁,所使用的正则表达式预先编译好,存放在UrlRewriteProcessor类中,UrlRewriteProcessor类实例集合为UrlRewriteModule类的静态成员。

URL重定向














web.config中进行配置
要使URL重定向生效,还必须将UrlRewriteModule配置到系统中才能行。
在web.config中<system.web/>/<httpModules/>加入以下代码。
<httpModules>
<add name="urlRewriting" type="Lanjian.GuestBook.UrlRewriteModule, GuestBook" /> <!-- 这儿是为URL重定向而增加的配置 -->
<add name="monorail" type="Castle.MonoRail.Framework.EngineContextModule, Castle.MonoRail.Framework" />
</httpModules>

注意我们的URL重定向HTTPModule在配置文件中,必须放在monorail之前,否则不能生效。<add name="urlRewriting" type="Lanjian.GuestBook.UrlRewriteModule, GuestBook" /> <!-- 这儿是为URL重定向而增加的配置 -->

</httpModules>

今天在GSpring 发表的《MonoRail学习笔记三:使用方便功能强大的routing功能》文章中了解到,MonoRail框架中的routing已经实现了该功能。
配置方法可以参考GSpring的文章。
总结
使用MonoRail框架时,URL重定向可以使用你以前习惯的或者是现有的HTTPModule模块进行处理,或者使用MonoRail的routing。参考源代码,二者实现思路是完全一样的。
同时也要注意,URL重定向配置项必须放在monorail之前。
项目截图:

本文的完整代码可以在这儿下载。