ASP.NET中的URL映射技巧
來源:易賢網(wǎng) 閱讀:1119 次 日期:2015-02-05 14:32:52
溫馨提示:易賢網(wǎng)小編為您整理了“ASP.NET中的URL映射技巧”,方便廣大網(wǎng)友查閱!

在項目中經(jīng)常要進行如下映射

映射到

首先要解決2個問題

第一是支持通配符的映射 URL映射是asp.net2.0新增的功能,不支持通配符

于是采用了NBEAR的 NBear.Web.Modules.UrlRewriteRules 進行通配符映射

<?xml version="1.0"?>

<!--

注意: 除了手動編輯此文件以外,您還可以使用

Web 管理工具來配置應(yīng)用程序的設(shè)置。可以使用 Visual Studio 中的

“網(wǎng)站”->“Asp.Net 配置”選項。

設(shè)置和注釋的完整列表在

machine.config.comments 中,該文件通常位于

WindowsMicrosoft.NetFrameworkv2.xConfig 中

-->

<configuration xmlns="">

<configSections>

<section name="UrlRewriteRules" type="NBear.Web.Modules.UrlRewriteRules, NBear.Web"/>

</configSections>

<UrlRewriteRules>

<Rule key="/(.*)/" value="/a.aspx?name=$1" />

<Rule key="/(.*)" value="/a.aspx?name=$1" />

</UrlRewriteRules>

<appSettings/>

<system.web>

<sessionState timeout="200" />

<httpModules>

<add type="NBear.Web.Modules.UrlRewriteModule, NBear.Web" name="UrlRewriteModule"/>

</httpModules>

<!--

設(shè)置 compilation debug="true" 將調(diào)試符號插入

已編譯的頁面中。但由于這會

影響性能,因此只在開發(fā)過程中將此值

設(shè)置為 true。

-->

<compilation debug="true" defaultLanguage="c#" />

<!--

通過 <authentication> 節(jié)可以配置 ASP.NET 使用的

安全身份驗證模式,

以標(biāo)識傳入的用戶。

-->

<authentication mode="Windows"/>

<!--

如果在執(zhí)行請求的過程中出現(xiàn)未處理的錯誤,

則通過 <customErrors> 節(jié)可以配置相應(yīng)的處理步驟。具體說來,

開發(fā)人員通過該節(jié)可以配置

要顯示的 html 錯誤頁

以代替錯誤堆棧跟蹤。

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

<error statusCode="403" redirect="NoAccess.htm" />

<error statusCode="404" redirect="FileNotFound.htm" />

</customErrors>

-->

</system.web>

</configuration>

vs2005里進行測試成功,但放到IIS里失敗

檢查了幾次,沒發(fā)現(xiàn)問題,仔細(xì)想了想

先了下,iis的工作流程應(yīng)該是遇到.aspx擴展名,交給.net處理,然后才能調(diào)用httpModules進行url映射

沒有aspx擴展名,所以iis直接當(dāng)成文件架,返回404錯誤了

而vs2005里的調(diào)試web服務(wù)器把所有的請求都發(fā)給了.net處理,所以成功.

于是更改映為

<Rule key="/(.*)/index.aspx" value="/a.aspx?name=$1" />

瀏覽

測試成功.

開心,把index.aspx設(shè)置成默認(rèn)文檔

測試;結(jié)果還是404錯誤

想了下iis認(rèn)為llinzzi文件夾不存在,自然就沒用默認(rèn)文檔去訪問

郁悶,想了很多方法,均失敗

難道要用 llinzzi/index.html訪問?難道要生成真是存在的文件夾?

都不是理想的方案

在嘗試從iis里的主目錄里的配置里修改isapi來實現(xiàn)用文件夾對iis的解析的時候,突然發(fā)現(xiàn)windows2003服務(wù)器上的iis6對比我工作機xp上的iis5多了一個名為

通配符應(yīng)用程序映射 的設(shè)置,眼睛一亮..有戲,第一名字聽起來有門,第二2003本來就是為.net打造的.于是點插入,

輸入 c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll

測試,成功!

搜索了下關(guān)于 通配符應(yīng)用程序映射 的資料

安裝通配符應(yīng)用程序映射

在 IIS 6.0 中,管理員可以在每次開始對網(wǎng)站或虛擬目錄發(fā)送請求時,將該網(wǎng)站或虛擬目錄配置為運行 Internet 服務(wù)器 API (ISAPI),而不管所請求文件的擴展名。

當(dāng) IIS Web 服務(wù)器接受到來自客戶端的請求時,Web 服務(wù)器會查看在請求中命名的文件擴展名,以確定有哪一個 ISAPI 或公共網(wǎng)關(guān)接口 (CGI) 應(yīng)用程序來處理該文件。例如,如果請求名為 Default.asp 的網(wǎng)頁時,IIS 可以從應(yīng)用程序映射列表中知道 Default.asp 由 Asp.dll ISAPI 應(yīng)用程序處理。

如果想在所請求的頁面發(fā)送到映射的應(yīng)用程序前對每次客戶端請求執(zhí)行特定的任務(wù),可以編寫一個 ISAPI 篩選器在請求到達時將其截獲。但是,ISAPI 篩選器具有以下限制:

它們不能訪問請求主體,而只訪問頭。

它們只能在每個站點配置,而不能在每個虛擬目錄配置。

它們不應(yīng)包含長期運行的操作,因為 ISAPI 篩選器是同步進行的。

它們的靈活性較小,因為 ISAPI 篩選器 API 的功能比 ISAPI 擴展 API 少,后者用于編寫 ISAPI 應(yīng)用程序。

它們在時間上難以管理。

它們是事件驅(qū)動的。

通過使用通配符應(yīng)用程序映射,您可以在所請求的頁面發(fā)送到其映射應(yīng)用程序之前截獲每個請求。其效果就像擁有處理每個文件名擴展的應(yīng)用程序映射。這就是使用“通配符”來命名這一功能的原因。使用通配符應(yīng)用程序映射的應(yīng)用程序只能是 ISAPI 應(yīng)用程序。

客戶端請求采用以下路由:

傳入的請求由安裝在根網(wǎng)站上的任何現(xiàn)有的 ISAPI 篩選器處理。ISAPI 篩選器依次執(zhí)行。

請求被發(fā)送到任何現(xiàn)有的通配符應(yīng)用程序映射的應(yīng)用程序,這些程序也是依次執(zhí)行的。如果傳入的請求是對虛擬目錄中的 Web 文件進行請求的,且通配符應(yīng)用程序映射已安裝在了該虛擬目錄和根網(wǎng)站上,那么只有安裝在該虛擬目錄的通配符應(yīng)用程序映射才被執(zhí)行。如果該虛擬目錄上沒有安裝通配符應(yīng)用程序映射,則將執(zhí)行安裝在網(wǎng)站上的通配符應(yīng)用程序映射。換句話說,通配符應(yīng)用程序映射只在所請求的 Web 文件所處的應(yīng)用程序中不存在映射時才會被繼承。

IIS 服務(wù)器會查看應(yīng)用程序映射表,以確定由哪個 ISAPI 應(yīng)用程序或 CGI 腳本專門處理所請求的文件。

每個階段都可以附加響應(yīng),然后傳回給客戶端。

使用通配符應(yīng)用程序映射

通配符應(yīng)用程序映射可以在以下方案中使用:

高安全性 Web 應(yīng)用程序(如銀行業(yè)應(yīng)用程序)要求對每個提出請求的用戶根據(jù)用戶名、密碼和帳戶號數(shù)據(jù)庫進行身份驗證。例如,一旦用戶通過了身份驗證,將會創(chuàng)建規(guī)定用戶可以訪問哪些信息的特定規(guī)則。如果通配符應(yīng)用程序映射確定用戶不具有相應(yīng)權(quán)利,它可以阻止請求的進一步訪問,或?qū)⒄埱蟀l(fā)送到所請求的網(wǎng)頁以外的網(wǎng)頁。這種自定義的身份驗證和授權(quán)方案可以在 ISAPI 應(yīng)用程序中執(zhí)行,并安裝為通配符應(yīng)用程序映射。這樣,所有用戶必須通過身份驗證,不考慮他們所請求的文件的擴展名。

針對單個用戶的廣告電子商務(wù)網(wǎng)站。例如,當(dāng)返回用戶所提出的請求時,通配符應(yīng)用程序映射應(yīng)用程序?qū)z查他們的身份,然后查詢他們以前已觀看或購買的項目。一旦通配符腳本映射將控制傳送到被請求的頁面,就可以顯示適合該用戶的廣告。

要點 您必須是本地計算機上 Administrators 組的成員或者必須被委派了相應(yīng)的權(quán)限,才能執(zhí)行下列步驟。作為安全性的最佳操作,請使用不屬于 Administrators 組的帳戶登錄計算機,然后使用運行方式命令以管理員身份運行 IIS 管理器。在命令提示符下,鍵入 runas /user:administrative_accountname "mmc %systemroot%system32inetsrviis.msc"。

將通配符應(yīng)用程序映射添加到 Web 服務(wù)器或網(wǎng)站

在 IIS 管理器中,展開本地計算機,展開“網(wǎng)站”文件夾,右鍵單擊所需的網(wǎng)站或虛擬目錄,然后單擊“屬性”。

單擊相應(yīng)的選項卡:“主目錄”、“虛擬目錄”、或“目錄”。

在“應(yīng)用程序設(shè)置”區(qū)域中,單擊“配置”,然后單擊“映射”選項卡。

要安裝通配符應(yīng)用程序映射,請進行以下操作:

在“映射”選項卡上,單擊“插入”。

在“可執(zhí)行文件”文本框中鍵入 DLL 的路徑或單擊“瀏覽”以找到該文件,如果該 DLL 文件是腳本引擎,選擇“應(yīng)用程序引擎”復(fù)選框,然后單擊“確定”。

要編輯或刪除通配符應(yīng)用程序映射,請進行以下操作:

在“應(yīng)用程序擴展”列表中,單擊想更改的腳本映射。

單擊“編輯”更改腳本映射,或單擊“刪除”刪除腳本映射。

要更改通配符應(yīng)用程序執(zhí)行的順序,在“通配符應(yīng)用程序映射(執(zhí)行順序)”框中重新安排通配符應(yīng)用程序映射,其方法是單擊“上移”或“下移”按鈕直到符合您想要的順序為止。

注意 請不要在通配符應(yīng)用程序映射列表中多次列出同一應(yīng)用程序。

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機網(wǎng)站地址:ASP.NET中的URL映射技巧
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)