文章回顧:
附說:
目前正在尋找開源團隊成員,有意向創業加入者,
OK,回到正題:
先上一張圖檔:

從圖中将可看到有很多的ashx處理程式,這些處理程式,是如何被安排工作的呢?
請看:秋色園的内部URL定位系統:
系統定位:
使用者定位:
Rss定位,包括主站和使用者:
<a href="http://www.cyqdata.com/rss"></a>
還有一個Home.ashx
原來在秋色園的V2.5之前,隻存在一個主站,後來增加了“健康頻道”之後,秋色園更改原來政策,将主站改造為一個頻道,技術頻道,于是出現三個頻道:
技術頻道、健康頻道、使用者頻道。
根據配置檔案,你可以将主站定位到任意頻道中,簡單說秋色園本無主站,隻是你把www指向某個頻道,于是某個頻道就成了主站,如此的處理方式,有利于擴充N個頻道内容,而主站,隻要任意指定即可。
二:重定向的内部邏輯
當UrlRewrite接到一個陌生的請求時,需要做以下的事情:
1:判斷本URL是否需要定位
簡單的分析為:如果是圖檔/js/css等,你需要直接return,因為不需要重定向。
而有一些簡單需要重定向:比如直接.mdb,.ashx類型的檔案時,你可以重定向到error.ashx去處理,告知使用者不允許直接通路。
2:分析URL,是主站請求,還是使用者請求
因為主站請求和使用者請求是有差別的,比如:
3:分離關鍵參數
總不能使用者怎麼請求來,就原封不動的轉給相應的ashx處理程式吧,這樣會加大ashx的工作量,是以,在這一步就分好,是非常有必要的。
秋色園一個分了3個參數:u={0}&type={1}& para={2}
3.1:使用者名:從URL中找出分類關鍵字使用者名
示例:如URL為以下形式的請求:
qblog.cyqdata.com
<a href="http://www.cyqdata.com/qblog">www.cyqdata.com/qblog</a>
需要從中分離出u=qblog,如果取出的是系統關鍵字,則為空
3.2:類型:從URL中找出分類關鍵字如:article、phpto、health、tech等
<a href="http://www.cyqdata.com/qblog/article">www.cyqdata.com/qblog/article</a>
<a href="http://www.cyqdata.com/qblog/photo">www.cyqdata.com/qblog/photo</a>
需要從中分離出type=article或type=photo,如果沒有,預設就是index
3.3:原始請求位址:
在某些業務進行中,你需要記錄原始請求的URL,這時候就可以輕松的拿到了
4:其它細節處理
4.1:虛拟目錄
這是什麼情況?
簡單的說就是:購了一個虛拟主機,主機支援一個站點,同時支援N個子目錄。所謂的子目錄,大體就是在主機目錄下建立多一個檔案夾來放站點。
出現的情況?
在擷取請求實體路徑時,會多出一層的虛拟目錄,導緻很多問題。
解決方法?
總結:
下節将為大夥介紹重定向定位後的第一接手人:Module.dll,
如何為人之父(基類),建立生命周期等過程。
本文轉自cyq1162 51CTO部落格,原文連結:<b>http://blog.51cto.com/cyq1162/499457</b>,如需轉載請自行聯系原作者