.NET重写URL浅谈

来源:互联网 发布:淘宝一元起拍 编辑:程序博客网 时间:2024/06/05 06:57

最近小项目要求重写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.RewriterConfigSerializerSectioHandler,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="_Default" %><!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/xhtml1/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基本一样的。算是简单化了一点点呵呵。

源代码

0 0