asp.net UrlReWriter使用經(jīng)驗(yàn)小結(jié)
更新時(shí)間:2008年11月05日 23:21:24 作者:
UrlRewriter 是微軟封裝好了的一個(gè)URL重寫組件。使用它可以讓我節(jié)約很多自已開發(fā)的時(shí)間。
好了,開始講述我的應(yīng)用經(jīng)驗(yàn),這只是很菜鳥的經(jīng)驗(yàn),高手就不用看了。
第一步,請(qǐng)從此下載該示例源碼。解壓,把UrlRewriter.dll copy到你的項(xiàng)目 bin 目錄下。
第二步,在Web.config中加入:
<?xml version="1.0" encoding="gb2312" ?>
<configuration>
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
第二步,加入重寫的規(guī)則節(jié)點(diǎn):
如:
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Sell/(.[0-9]*)\.html</LookFor>
<SendTo>~/Search/Search_Sell.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Sell/Search_Sell\.aspx</LookFor>
<SendTo>~/Search/Search_Sell.aspx</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Buy/(.[0-9]*)\.html</LookFor>
<SendTo>~/Search/Search_Buy.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Buys/(.[0-9]*)\.html</LookFor>
<SendTo>~/Buys/Show.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
這個(gè)就要根據(jù)你的需要了,如果你對(duì)正則表達(dá)式不熟,那么沒辦法,要么憑借你的高智商去找其中規(guī)律,稍稍改一下就能為你所用了。呵呵。如果實(shí)在搞不清,那就自己GOOGLE一下正則表達(dá)式吧。(本人開始是參考別人的配置猜的,竟然用對(duì)了,呵呵。后來還是看了一下相關(guān)資料,發(fā)現(xiàn)這東東很有用。)
第三步,加入模塊配置(寫在<system.web>里面):
如:
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
(這里表示使用HTTP程序來處理重寫)
好了,到了現(xiàn)在我們可以試一下看。
于是輸入:http://127.0.0.1:8080/Sell/1.aspx 出現(xiàn)了,呵呵。但是如果所它改為:http://127.0.0.1:8080/Sell/1.html
暈,發(fā)現(xiàn)不行。汗。。。
呵呵,原因是沒把HTML的解析用 asp.net 的ISAPI來解析。
辦法是。。。
第四步,在IIS\你的站點(diǎn)\屬性\主目錄\配置\映謝 加入一個(gè)和 aspx 頁面的配置相同的擴(kuò)展名項(xiàng)。注意“確認(rèn)文件是否存在”不要勾選,否則會(huì)出現(xiàn)找不到文件。
現(xiàn)在再來試試看。什么?#¥%#¥%#,還是不行。呵呵。不要急,咱們回過頭再來看看,原來在 web.config 中我們沒有配置 .html 也使用模塊此解析。
第五步,在模塊配置中加入:
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
現(xiàn)在總可以了吧,呵呵。終于看到了,興奮吧。不要急,這還只是最簡單的。如果你的頁面有回傳。比如說放了DATAGRID,有分頁的,你點(diǎn)到下一頁就發(fā)現(xiàn),暈倒,又出問題了。
這下怎么辦呢,這個(gè)其實(shí)微軟件的網(wǎng)站上就有說到,我在這里簡述一下了。
第六步,加入窗體回傳保持的組件:
在原來你下載的項(xiàng)目里找到 ActionlessForm.dll 放到你的項(xiàng)目 bin 目錄下。
然后在你的這個(gè)頁面中加入:
<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
再把你的<Form...>改為:
<skm:Form id="你的表單名" method="post" runat="server">
.....
</skm:Form>
第二步,在Web.config中加入:
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="gb2312" ?>
<configuration>
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
第二步,加入重寫的規(guī)則節(jié)點(diǎn):
如:
復(fù)制代碼 代碼如下:
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Sell/(.[0-9]*)\.html</LookFor>
<SendTo>~/Search/Search_Sell.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Sell/Search_Sell\.aspx</LookFor>
<SendTo>~/Search/Search_Sell.aspx</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Buy/(.[0-9]*)\.html</LookFor>
<SendTo>~/Search/Search_Buy.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Buys/(.[0-9]*)\.html</LookFor>
<SendTo>~/Buys/Show.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
這個(gè)就要根據(jù)你的需要了,如果你對(duì)正則表達(dá)式不熟,那么沒辦法,要么憑借你的高智商去找其中規(guī)律,稍稍改一下就能為你所用了。呵呵。如果實(shí)在搞不清,那就自己GOOGLE一下正則表達(dá)式吧。(本人開始是參考別人的配置猜的,竟然用對(duì)了,呵呵。后來還是看了一下相關(guān)資料,發(fā)現(xiàn)這東東很有用。)
第三步,加入模塊配置(寫在<system.web>里面):
如:
復(fù)制代碼 代碼如下:
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
(這里表示使用HTTP程序來處理重寫)
好了,到了現(xiàn)在我們可以試一下看。
于是輸入:http://127.0.0.1:8080/Sell/1.aspx 出現(xiàn)了,呵呵。但是如果所它改為:http://127.0.0.1:8080/Sell/1.html
暈,發(fā)現(xiàn)不行。汗。。。
呵呵,原因是沒把HTML的解析用 asp.net 的ISAPI來解析。
辦法是。。。
第四步,在IIS\你的站點(diǎn)\屬性\主目錄\配置\映謝 加入一個(gè)和 aspx 頁面的配置相同的擴(kuò)展名項(xiàng)。注意“確認(rèn)文件是否存在”不要勾選,否則會(huì)出現(xiàn)找不到文件。
現(xiàn)在再來試試看。什么?#¥%#¥%#,還是不行。呵呵。不要急,咱們回過頭再來看看,原來在 web.config 中我們沒有配置 .html 也使用模塊此解析。
第五步,在模塊配置中加入:
復(fù)制代碼 代碼如下:
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
現(xiàn)在總可以了吧,呵呵。終于看到了,興奮吧。不要急,這還只是最簡單的。如果你的頁面有回傳。比如說放了DATAGRID,有分頁的,你點(diǎn)到下一頁就發(fā)現(xiàn),暈倒,又出問題了。
這下怎么辦呢,這個(gè)其實(shí)微軟件的網(wǎng)站上就有說到,我在這里簡述一下了。
第六步,加入窗體回傳保持的組件:
在原來你下載的項(xiàng)目里找到 ActionlessForm.dll 放到你的項(xiàng)目 bin 目錄下。
然后在你的這個(gè)頁面中加入:
復(fù)制代碼 代碼如下:
<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
再把你的<Form...>改為:
<skm:Form id="你的表單名" method="post" runat="server">
.....
</skm:Form>
相關(guān)文章
asp.net調(diào)用飛信免費(fèi)發(fā)短信(測試有效)
這篇文章主要介紹了asp.net如何調(diào)用飛信免費(fèi)發(fā)短信,記得要開通飛信把對(duì)方加為好友才能發(fā),需要的朋友可以參考下2014-05-05Sqlite 常用函數(shù)封裝提高Codeeer的效率
以下是頻繁用到的Sqlite函數(shù),內(nèi)容格式相對(duì)固定,封裝一下有助于提高開發(fā)效率^_^至少提高Codeeer的效率了2012-12-12Visual studio 2017添加引用時(shí)報(bào)錯(cuò)未能正確加載ReferenceManagerPackage包的解決方法
這篇文章主要介紹了VS2017添加引用時(shí)報(bào)錯(cuò)未能正確加載ReferenceManagerPackage包的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04ASP.NET操作Word的IIS權(quán)限設(shè)置
檢索 COM 類工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件時(shí)失敗,原因是出現(xiàn)以下錯(cuò)誤: 80070005。2011-02-02asp.net下通過泛解析和偽靜態(tài)實(shí)現(xiàn)二級(jí)域名的實(shí)現(xiàn)方法
當(dāng)我們想做一個(gè)站群或想為每一個(gè)會(huì)員的主頁設(shè)置為一個(gè)二級(jí)域名時(shí),總是想拼命的去找些組件來實(shí)現(xiàn)。2010-10-10詳解ASP.NET Core中配置監(jiān)聽URLs的五種方式
這篇文章主要介紹了詳解ASP.NET Core中配置監(jiān)聽URLs的五種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04