url映射
url映射特性利用web.config中存儲的配置信息把收到的請求重映射(remap)到不同的url。重映射發生在對請求的所有其它處理操作之前。下面的例子演示的是重映射一個頁面請求,實際上任意文件類型都可以把請求重映射到不同的url。
定義重映射url
url映射的配置信息存儲在web.config中。元素中嵌套的每個元素為重映射進入站點的(inbound)url定義了一條規則。url屬性定義了進入站點的url的exact(原樣)屬性,url映射特性會試圖用它進行匹配操作。如果exact匹配操作發生了,就會給進入站點的url重新寫入mappedurl屬性值。請注意,這個特性不支持更高級的規則(例如基于通配符和正則表達式的匹配)。
示例web.config為大量的url定義了映射規則。示例使用的web.sitemap文件定義的大量帶有url值的節點都會被重映射。其結果是,url映射和站點導航的組合使用,使得開發者可以用友好的url來定義導航結構,并使用url映射把請求重新寫到不同的頁面來執行實際的處理過程。
當你運行示例的時候,請注意menu和treeview控件是如何根據web.sitemap文件中定義的站點結構來顯示導航數據的。如果你把鼠標停留在treeview控件或右上角的sitemappath控件的鏈接上方,狀態欄中顯示的url是一個友好的url鏈接。當你點擊任何導航鏈接的時候,實際運行的頁面是default.aspx。但是,menu、treeview和sitemappath控件中的導航信息仍然反映為友好的url結構。
在頁面的底部你還可以看到request.path、request.querystring["category"]和request.rawurl返回的值。request.path和request.querystring["category"]返回的值一直反映重映射進入站點的url的結果。但是,request.rawurl的值反映了重映射之前的友好的url。當站點導航特性試圖把url信息與sitemap文件包含的數據進行匹配的時候,它會使用request.rawurl。如果匹配的值沒有找到,xmlsitemapprovider就把request.path作為替代者。在例子中,所有的友好url在web.sitemap文件中都有條目,因此使用站點導航的控件一直根據友好的url來顯示和引用節點。
以下是引用片段:
<?xml version="1.0" ?>
<configuration xmlns="http://schemas.microsoft.com/.netconfiguration/v2.0">
<system.web>
<urlmappings enabled="true">
<add url="~/category.aspx" mappedurl="~/default.aspx?category=default" />
<add url="~/autos.aspx" mappedurl="~/default.aspx?category=autos" />
<add url="~/games.aspx" mappedurl="~/default.aspx?category=games" />
<add url="~/health.aspx" mappedurl="~/default.aspx?category=health" />
<add url="~/news.aspx" mappedurl="~/default.aspx?category=news" />
</urlmappings>
</system.web>
</configuration>
新聞熱點
疑難解答
圖片精選