.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.RewriterConfigSerializerSectionHandler,
 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 >
    
< href ="ListCategories.aspx" > ListCategories.aspx </ 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 >< 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设置:

.net重写url浅谈

这样的话伪静态就可以用了
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll ---这是上面的路径

浏览Default.aspx页

 ListCategories.aspx --页面其实在服务器上面是没有的。它里面的内容是Default.aspx的内容,因为配置文件里面设置了

写得有点乱。 

本例子是和微软的重写url基本一样的。算是简单化了一点点呵呵。

源代码

作者: ret00100
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的:(.net)