ASP.NET 中執行 URL 重寫

具體實現步驟(其中的一種實現方法):web

  1、下載相關的DLL(ActionlessForm.dll和UrlRewriter.dll

    http://download.csdn.net/detail/yingwanghbx/4510059正則表達式

  2、在項目中引用那兩個DLL文件

    右擊項目,點擊Add Reference,選擇Browse,而後選擇相應的DLL,點擊OK便可。api

  3、添加browser文件

  一、右擊項目,點擊Add-New Item,選擇Browser File,取個有意義的名字。在生成的*.browser文件的browsers節點中添加以下代碼:less

複製代碼
<!--URLRewriter-->
    <browser refID="Default">
      <controlAdapters>
        <adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
               adapterType="URLRewriter.Form.FormRewriterControlAdapter"/>
      </controlAdapters>
    </browser>
複製代碼

  二、在配置文件web.config中system.web節點內添加httpModulespost

<!--URLRewriter
    type:HttpModule的標識號和類庫名稱
    name:取一個較爲友好的名稱-->
    <httpModules>
      <add type="URLRewriter.RewriterModule, URLRewriter" name="RewriterModule"/>
    </httpModules>

  三、而後就是在configuration節點下添加(必須是第一個子節點):測試

複製代碼
<!--URLRewriter-->
  <configSections>
    <section name="CustomConfiguration" type="URLRewriter.Config.UrlsSection, URLRewriter"/>
  </configSections>
  <CustomConfiguration>
    <urls>
      <!--([\w]+)表示,1到n個字母或數字或下劃線或漢字組成-->
      <add virtualUrl="~/Default/([\w]+)*" destinationUrl="~/Default.aspx?username=$1"/>
      <add virtualUrl="~/Default/([\w]+)*/([\w]+)*" destinationUrl="~/Default.aspx?newsTypeId=$1&amp;newsWhere=$2"/>
      <add virtualUrl="~/page/user/login" destinationUrl="~/page/user/login.aspx"/>
      <add virtualUrl="~/page/user/registe" destinationUrl="~/page/user/registe.aspx"/>
      <add virtualUrl="~/page/index" destinationUrl="~/page/index.aspx"/>
    </urls>
  </CustomConfiguration>
複製代碼

  如上,在不須要傳參的狀況下,能夠直接在virtualUrl裏面寫要轉化地址,destinationUrl爲真實地址。在須要傳參的狀況下,用正則表達式代替,多個參數,在destinationUrl中用&amp分隔,在virtualUrl中用本身規定的符號代替,我是用的‘/’分隔的。網站

  四、測試,在Default的Page_Load中添加以下代碼this

if (!string.IsNullOrEmpty(Request.Params["newsTypeId"]))
{
    string newsId = Request.Params["newsTypeId"].ToString();
    string newsWhere = Request.Params["newsWhere"].ToString();
    Response.Write("newsid:" + newsId + "<br/>newsWhere:" +newsWhere);
} 

結果以下:url

  五、加入窗體回傳保持的組件:spa

  在你的這個頁面中加入: <%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 再把你的<Form...>改成: <skm:Form id="你的表單名" method="post" runat="server"> ..... </skm:Form>

 

  六、在IIS7.5裏配置

  

在IIS中新建網站(端口號8111)

 

      直接運行http://localhost:8111/

 

    錯誤截圖

 

 

 

 

 

 

配置方法:

 

 

 

 

 

 

2、添加通配符腳本映射,選擇:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

 

 

 

 

3、找到和網站相對的鏈接池,選擇framework 4.0  經典模式

 

 

 

 

 

 

 

4、選擇應用程序鏈接池,高級設置,啓用32位應用程序,設爲true

 

相關文章
相關標籤/搜索