由于需要我们经常会想将动态的页面做成伪静态的,或者在get传值的时候使其简洁明了(实现“可删节”的URL),这时我们需要用到URL重写,微软的MSDN上有详细的原理和使用介绍。我这里就将一种简单的使用方法和步骤写下来。

  MSDN文章:http://msdn.microsoft.com/zh-cn/library/ms972974.aspx

  具体实现步骤(其中的一种实现方法):

  一、下载相关的DLL(ActionlessForm.dll和UrlRewriter.dll)

    http://download.csdn.net/detail/yingwanghbx/4510059

  二、在项目中引用那两个DLL文件

    右击项目,点击Add Reference,选择Browse,然后选择相应的DLL,点击OK即可。

  三、添加browser文件

  1、右击项目,点击Add-New Item,选择Browser File,取个有意义的名字。在生成的*.browser文件的browsers节点中添加如下代码:

<!--URLRewriter-->
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="URLRewriter.Form.FormRewriterControlAdapter"/>
</controlAdapters>
</browser>

  2、在配置文件web.config中system.web节点内添加httpModules

<!--URLRewriter
type:HttpModule的标识号和类库名称
name:取一个较为友好的名称-->
<httpModules>
<add type="URLRewriter.RewriterModule, URLRewriter" name="RewriterModule"/>
</httpModules>

  3、然后就是在configuration节点下添加(必须是第一个子节点):

<!--URLRewriter-->
<configSections>
<section name="CustomConfiguration" type="URLRewriter.Config.UrlsSection, URLRewriter"/>
</configSections>
<CustomConfiguration>
<urls>
<!--([\w]+)表示,1到n个字母或数字或下划线或汉字组成-->
<add virtualUrl="~/Default/([\w]+)*" destinationUrl="~/Default.aspx?username=$1"/>
<add virtualUrl="~/Default/([\w]+)*/([\w]+)*" destinationUrl="~/Default.aspx?newsTypeId=$1&amp;newsWhere=$2"/>
<add virtualUrl="~/page/user/login" destinationUrl="~/page/user/login.aspx"/>
<add virtualUrl="~/page/user/registe" destinationUrl="~/page/user/registe.aspx"/>
<add virtualUrl="~/page/index" destinationUrl="~/page/index.aspx"/>
</urls>
</CustomConfiguration>

  如上,在不需要传参的情况下,可以直接在virtualUrl里面写要转化地址,destinationUrl为真实地址。在需要传参的情况下,用正则表达式代替,多个参数,在destinationUrl中用&amp分隔,在virtualUrl中用自己规定的符号代替,我是用的‘/’分隔的。

  4、测试,在Default的Page_Load中添加如下代码

if (!string.IsNullOrEmpty(Request.Params["newsTypeId"]))
{
string newsId = Request.Params["newsTypeId"].ToString();
string newsWhere = Request.Params["newsWhere"].ToString();
Response.Write("newsid:" + newsId + "<br/>newsWhere:" +newsWhere);
}

结果如下:

  5、加入窗体回传保持的组件:

  在你的这个页面中加入:
<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
再把你的<Form...>改为:
<skm:Form id="你的表单名" method="post" runat="server">
.....
</skm:Form>

  6、在IIS7.5里配置

  请看他人博客,我就不写了,主要是找到和网站相对的连接池,选择framework 4.0经典模式

http://www.cnblogs.com/zhongweiv/archive/2011/10/29/UrlRewriter_IIS.html

在 ASP.NET 中执行 URL 重写的方法的更多相关文章

  1. 转载MSDN 在ASP.NET 中执行 URL 重写

    转载文章原网址 http://msdn.microsoft.com/zh-cn/library/ms972974.aspx 摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重 ...

  2. ASP.NET 中执行 URL 重写

    具体实现步骤(其中的一种实现方法): 一.下载相关的DLL(ActionlessForm.dll和UrlRewriter.dll) http://download.csdn.net/detail/yi ...

  3. Asp.net中Request.Url的各个属性对应的意义介绍

    Asp.net中Request.Url的各个属性对应的意义介绍 本文转载自 http://www.jb51.net/article/30254.htm 网络上关于Request.Url的说明已经很多也 ...

  4. 在asp.net中执行存储过程(转)

    摘自:http://www.cnblogs.com/smhy8187/articles/677742.html 声明:本例用的数据库是系统提供的pubs数据库,表是是employee,编程语言用C# ...

  5. Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>

    Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...

  6. ASP.net中导出Excel的简单方法介绍

    下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...

  7. ASP.NET中XML转JSON的方法

    原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. X ...

  8. 九、dbms_ddl(提供了在PL/SQL块中执行DDL语句的方法)

    1.概述 作用:提供了在PL/SQL块中执行DDL语句的方法,并且也提供了一些DDL的特殊管理方法. 2.包的组成 1).alter_compile说明:用于重新编译过程.函数和包语法:dbms_dd ...

  9. PECcpu2006中执行单个测试程序的方法

    PECcpu2006中执行单个测试程序的方法 2010-12-30 11:44:00 maray 阅读数 10055更多 分类专栏: 科学理论   版权声明:本文为博主原创文章,遵循CC 4.0 BY ...

随机推荐

  1. c++学习之容器细枝末节(1)

    对照着c++primier 开始学习第九章容器,把课后习题当做练习,虽然是看过书上的讲解,但是做题编程的时候,一些需要注意的地方还是难免有遗漏. 一下是几点印象比较深刻的总结: (1)前几章只学了ve ...

  2. 第27章 结构型模式大PK

    27.1 代理模式 VS 装饰模式 27.1.1 代理模式 (1)场景:客人找运动员代理要求安排运动员参加比赛 (2)说明:代理人有控制权,可以拒绝客人的要求,也可以答应安排,甚至自己下去跑(因为有些 ...

  3. C# 事件编程在游戏开发的应用

    2D碰撞检测:http://wenku.baidu.com/view/45544cfcfab069dc50220145.html 1.Action System.Action 等于快捷创建一个委托 2 ...

  4. Nginx反向代理和负载均衡——个人配置

    #user nobody; worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  5. java 22 - 5 多线程之获取和设置线程对象的名称

    如何获取线程对象的名称呢? public final String getName():获取线程的名称.如何设置线程对象的名称呢? public final void setName(String n ...

  6. java list

    List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引 ArrayList:底层的数据结构使用的是数组结构(数组长度是可变 ...

  7. HTML 学习笔记 CSS(选择器2)

    CSS 类选择器 类选择器允许以一种独立于文档元素的方式来指定样式 CSS 类选择器 类选择器允许以一种独立于文档元素的方式来指定样式 该选择器可以单独使用 也可以和其他元素结合使用 提示 只要适当的 ...

  8. 1D1D动态规划优化初步

    再学习一下动态规划的基本优化方法- 首先这篇文章应该大家都看过吧-没看过的自行百度 关于实现的思路文章里都给好了-这篇就主要给一点题目啥的 (P.S. 电脑重装了,如果博客发出来有一些奇怪的问题不要在 ...

  9. Linux的chattr与lsattr命令

    有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux ...

  10. PAT 1009. 说反话 (20)

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...