.NET重寫URL淺談

作者: xhp  來源: 博客園  發布時間: 2009-10-13 10:07  閱讀: 5925 次  推薦: 1   原文鏈接   [收藏]  

最近小項目要求重寫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基本一樣的。算是簡單化了一點點呵呵。

源代碼

1
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()