.NET重寫URL淺談
最近小項目要求重寫url找了下資料用到了MS的2個dll,微軟的例子寫得太不明顯了。后來終于改好了。
ActionlessForm.dll------用來處理回發
URLRewriter.dll----- 是微軟封裝好了的一個URL重寫組件
添加引用----
具體的使用說明請去看
http://msdn.microsoft.com/zh-cn/library/ms972974.aspx#XSLTsection123121120120
比我說得好得多。
具體使用方法:
首先web.config的配置:
<?xml version="1.0"?> <configuration> <configSections> <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectio Handler,URLRewriter" /> </configSections> <RewriterConfig> <Rules> <RewriterRule> <LookFor>~/ListCategories\.aspx</LookFor> <SendTo>~/Default.aspx</SendTo> </RewriterRule> <RewriterRule> <LookFor>~/(\d+)\.html</LookFor> <SendTo>~/Cover.aspx?id=$1</SendTo> </RewriterRule> </Rules> </RewriterConfig> <system.web> <httpModules> <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/> </httpModules> <compilation debug="true"/> </system.web> </configuration>
主要配置的代碼是這些。其他的根據自己的需要和.net的版本自行添加。
然后Default.aspx,Cover.aspx,新建2個頁面
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Defa ult" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>無標題頁</title> </head> <body> <form id="form1" runat="server"> <div> <a href="ListCategories.aspx">ListCategories.aspx</a> <a href="30.html">30.html</a> </div> </form> </body> </html>
Cover.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Cover.aspx.cs" Inherits="Cover" %> <%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh tml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Cover</title> </head> <body> <skm:form id="form1" runat="server"> <div> Cover頁面 <h4><a href="javascript:void(0)" onclick="history.go(-1)">返回上一頁</a></h4> <asp:Button ID="Button1" runat="server" Text="Button" /> </div> </skm:form> </body> </html>
Cover.aspx.cs:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class Cover : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["id"] == null) { Response.End(); } else { int id = Convert.ToInt32(Request.QueryString["id"]); Response.Write(id); } } }
還要去對iis設置:
這樣的話偽靜態就可以用了
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll ---這是上面的路徑
瀏覽Default.aspx頁
ListCategories.aspx --頁面其實在服務器上面是沒有的。它里面的內容是Default.aspx的內容,因為配置文件里面設置了
寫得有點亂。
本例子是和微軟的重寫url基本一樣的。算是簡單化了一點點呵呵。
全站熱搜