ASP.NET 中執行 URL 重寫

來源:互聯網
上載者:User

標籤:des   c   style   class   blog   code   

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

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

    http://download.csdn.net/detail/yingwanghbx/4510059

  二、在項目中引用那兩個DLL檔案

    右擊項目,點擊Add Reference,選擇Browse,然後選擇相應的DLL,點擊OK即可。

  三、添加browser檔案

  1、右擊項目,點擊Add-New Item,選擇Browser File,取個有意義的名字。在產生的*.browser檔案的browsers節點中添加如下代碼:

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

  2、在設定檔web.config中system.web節點內添加httpModules

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

  3、然後就是在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為真真實位址。在需要傳參的情況下,用Regex代替,多個參數,在destinationUrl中用&amp分隔,在virtualUrl中用自己規定的符號代替,我是用的‘/’分隔的。

  4、測試,在Default的Page_Load中添加如下代碼

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);} 

結果如下:

  5、加入表單回傳保持的組件:

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

 

  6、在IIS7.5裡配置

  

在IIS中建立網站(連接埠號碼8111)

 

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

 

    錯誤

 

 

 

 

 

 

配置方法:

 

 

 

 

 

 

二、添加萬用字元指令碼映射,選擇:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

 

 

 

 

三、找到和網站相對的串連池,選擇framework 4.0  傳統模式

 

 

 

 

 

 

 

四、選擇應用程式串連池,進階設定,啟用32位應用程式,設為true

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.