.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设置:

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

浏览Default.aspx页

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

写得有点乱。 

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

源代码

作者:ret00100
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @   大佬辉  阅读(2992)  评论(6编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示