示例環境:VS2010
要求:
重寫前:http://localhost:13275/Default.aspx?username=wilsonhtml
重寫後:http://localhost:13275/wilsonweb
第一步:下載相關DLL(ActionlessForm.dll和UrlRewriter.dll)
第二步:VS2010建立測試網站應用程序,並添加以上DLL的引用
PS: 操做步驟省略,我想都會
第三步:在項目中添加asp.net文件(App_Browsers)
App_Browsers這個咱們比較少用
App_Browsers文件夾包含.browser文件,.browser文件是XML文件,能夠標識嚮應用程序發出請求的瀏覽器,並理解這些瀏覽器的功能。
在C:\Windows\Microsoft.NET\ Framework\v2.0.50727\CONFIG\Browsers中有一個可全局訪問的.browser文件列表。另外,若是要
修改這些默認的瀏覽器定義文件,只需將Browsers文件夾中的對應.browser文件複製到應用程序的\App_Browsers文件夾,修改其定義便可。
若是對這些Asp.Net文件夾了解很少能夠看看這篇文章,相信頗有幫助
1.選擇項目--->右鍵添加--->添加asp.net文件夾--->App_Browsers
2.在App_Browsers下建立Form.browser文件
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="URLRewriter.Form.FormRewriterControlAdapter"/>
</controlAdapters>
</browser>
</browsers>
PS: refID:不能夠與ID和arentID同時存在瀏覽器
第四步:配置web.config
1 .在configuration節點下添加
<configSections>
<section name="CustomConfiguration" type="URLRewriter.Config.UrlsSection, URLRewriter"/>
</configSections>
<CustomConfiguration>
<urls>
<!--([\w]+)表示,1到n個字母或數字或下劃線或漢字組成-->
<add virtualUrl="~/([\w]+)*" destinationUrl="~/Default.aspx?username=$1"/>
</urls>
</CustomConfiguration>
PS:正則的部分,要根據不一樣的規則去寫,若是有不會的,能夠留下詳細規則,我看到後會儘快回覆!!
2.在System.web節點下添加
<httpModules>
<add type="URLRewriter.RewriterModule, URLRewriter" name="RewriterModule"/>
</httpModules>
解釋一下httpModules的的Add節點屬性:
type:HttpModule的標識號和類庫名稱
name:取一個較爲友好的名稱
用MSDN的截圖來解釋一下
第五步:測式
1.在項目Default.aspx.cs文件Load事件中加入
if (!IsPostBack)
{
StringBuilder sb = new StringBuilder();
sb.Append("當前所在位置:Default.aspx<br/>");
if (!string.IsNullOrEmpty(Request.Params["username"]))
{
sb.Append("所接收到的參數username:" + Request.Params["username"]);
}
Response.Write(sb.ToString());
}
這裏的測試主要是測試直接用重寫後規則訪問,看是否訪問成功,並測試是否可以接收到username參數
還有輸入重寫前的地址,是否能訪問成功
測試一:找開----->http://localhost:13275/Default.aspx
結果(aspx頁輸出)------>當前所在位置:Default.aspx
測試二:找開----->http://localhost:13275/wilson
結果(aspx頁輸出)------>當前所在位置:Default.aspx
所接收到的參數username:wilson
第六步:在IIS7.5裏配置
完成前五步後,直接運行VS能夠重寫成功,但發佈在IIS中時就會有相應的錯誤,這樣須要配置一下IIS,詳情請看下面博客地址