Spiga

UrlRewriting在Community Server中的应用研究

2007-04-01 21:35 by BAsil, 2815 visits, 收藏, 编辑

大家都知道Community Server中使用了Url Rewrite,但是对于希望通过CS学习Url Rewrite的朋友,可能稍微难了一点,因为CS项目确实是相当的繁杂,我们不容易对Url Rewrite做一些有针对性的调试。

我在这里把涉及到UrlRewriting的部分抽取出来,做成一个Demo,使大家可以从中了解到CS是怎么针对UrlRewriting进行设计和应用的。

其中用到的类简单的列一下

Configuration/CSConfiguration.cs 取得communityserver.config中的内容

HttpModule/CSHttpModule.cs   在Begin_Request时执行UrlRewriting

SiteUrlsData.cs 取得SiteUrls.config中内容,定义url rewrite 重写的规则

SiteUrls.cs    匹配url rewrite重写的规则

CSContext.cs 每个请求会产生一个CScontext上下文

CSCache.cs  缓存

Globals.cs 全局的属性和方法,大部分注释掉

Openlab.Controls.OLPage  宝玉的重写的Page类,和CS中的CSPage完全一样,这里就不改了,主要是保证重写后的action仍然指向虚拟的url,具体的内容大家可以看看宝玉关于url rewrite的一篇文章。

forums/printpost.aspx  无后台cs类,在web.config中使用的pageBaseType起作用。我在测试中发现,只有aspx页面没有后台的cs类,才会调用pageBaseType中的类,网上很多朋友也碰到这个问题,不知道大家是怎么解决的。

forums/showpost.aspx  直接继承Openlab.Controls.OLPage类。

在web.config中,这样写

<pages pageBaseType="Openlab.Controls.OLPage, Openlab"/> <httpModules> <add name="UrlRewritingTest" type="UrlRewritingTest.CSHttpModule, UrlRewritingTest" /> </httpModules>

在communityserver.config中,别忘了

 

<communityserver> <core> <providers> <add name = "SiteUrlsDataProvider" type = "UrlRewritingTest.Components.SiteUrlsData, UrlRewritingTest" path = "siteurls.config" /> </providers> </core> </communityserver>

在浏览器中输入http://localhost/UrlRewritingTest/forums/1/PrintPost.aspx

http://localhost/UrlRewritingTest/forums/1/3/ShowPost.aspx

代码下载:CSUrlRewriting.zip

下载后,把CSUrlRewriting中的UrlRewritingTest映射为localhost/UrlRewritingTest即可。

Add your comment

3 条回复

  1. #1楼 asde[未注册用户]2007-04-01 23:14
    请问宝玉的url rewrite那篇文章在哪里亚
    搜不到。。。
     回复 引用   
  2. #2楼 无心之柳.NET      2007-04-01 23:24
    不错,不错,看来还是有志同道合的人啊,不过人不多啊,共同进步,
     回复 引用 查看   
  3. #3楼 BAsil2007-04-02 08:49
    @无心之柳.NET
    赫赫,多多交流阿。
    @asde
    不好意思,我搜了一下,宝玉的原贴时间太久找不到了,如果没记错的话应该是05年3月,在一个论坛上找到了这个帖子,应该也是宝玉发的。
    http://www.iecn.net/bbs/view/15583.html
     回复 引用