博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URLRewriter修改使你更容易理解重写原理
阅读量:4558 次
发布时间:2019-06-08

本文共 2365 字,大约阅读时间需要 7 分钟。

在上一篇,我感觉有的地方不是太好理解,所以我在这里修改了一下,更通俗易懂了,为了让更容易理解。web.config中configSections中添加这个这个节点,根据这个节点  ,你可以看出创建自定义的节点是什么样子的,
~/About-(\d+).html
~\About.aspx?id=$1
~/About-(\d+)-(\d+).html
~\About.aspx?id=$1&t=$2

这一点他们必须相同。

同样的你必须创建一个RewriterConfigSerializerSectionHandler去实IConfigurationSectionHandler接口    public class RewriterConfigSerializerSectionHandler : IConfigurationSectionHandler    {        public object Create(object parent, object configContext, XmlNode section)        {             Create an instance of XmlSerializer based on the RewriterConfiguration type...            //XmlSerializer ser = new XmlSerializer(typeof(RewriterConfigss));             Return the Deserialized object from the Web.config XML            //return ser.Deserialize(new XmlNodeReader(section));            RewriterRule para = null;            IList
list = new List
(); for (int i = 0; i < section.ChildNodes.Count; i++) { para = new RewriterRule(); XmlNode xm = section.ChildNodes[i]; para.SendTo= xm.SelectSingleNode("SendTo").InnerText; para.LookFor = xm.SelectSingleNode("LookFor").InnerText; list.Add(para); } return list; } }上面注释是url重写的源码,在这里大家可以看出我修改了。这个样子更容易被理解 public class RewriterConfigss { //public RewriterRuleCollection Rules { get; set; } ///
/// 该方法从web.config中读取规则集合,并使用了Cache以避免频繁IO操作 /// ///
public static IList
GetConfig() { //使用缓存 if (HttpContext.Current.Cache["RewriterRule"] == null) HttpContext.Current.Cache.Insert("RewriterRule", ConfigurationManager.GetSection("RewriterConfig/Rule")); return ((IList
)HttpContext.Current.Cache["RewriterRule"]); } }
}
ConfigurationManager.GetSection("RewriterConfig/Rule")就这点要注意的是,这么写是为了他直接获得就是里面那些RewriterRule节点集合
就这些了,其他地方和上一遍中的代码一样。

  

转载于:https://www.cnblogs.com/waters/archive/2012/03/03/URLRewriter.html

你可能感兴趣的文章
diff.js 列表对比算法 源码分析
查看>>
模块运用,文件搜索
查看>>
基于托管C++的增删改查及异步回调小程序
查看>>
hdu 1811 Rank of Tetris
查看>>
56. Merge Intervals 57. Insert Interval *HARD*
查看>>
java 调整jvm堆大小上限
查看>>
浏览器全屏之requestFullScreen全屏与F11全屏
查看>>
软件包管理:rpm命令管理-安装升级与卸载
查看>>
旋转图像
查看>>
字符串中的数字(字符串、循环)
查看>>
15.select into
查看>>
缓存-->Java中缓存的原理
查看>>
运行web项目端口占用问题
查看>>
Java Spring-IOC和DI
查看>>
【NOIP1999】【Luogu1015】回文数(高精度,模拟)
查看>>
Linux上安装Python3.5
查看>>
crt安装
查看>>
git切换分支报错:error: pathspec 'origin/XXX' did not match any file(s) known to git
查看>>
c++中static的用法详解
查看>>
转 我修改的注册表,但是程序运行起来,还是记着以前的
查看>>