asp.net iis URLRewrite 实现方法详解
原文 asp.net iis URLRewrite 实现方法详解
实现非常简单首先你要在你的项目里引用两个dll:actionlessform.dll、urlrewriter.dll,真正实现重写的是 urlrewriter.dll 但是如果你要实现分页,那么必须使用这个actionlessform .dll。文件下载见文章底部。现在来看操作步骤:
第一步,下载组件,把urlrewriter.dll 复制到你的项目 bin 目录下。
第二步,在web.config中的<configuration>内加入:
<configsections>
<section name="rewriterconfig" type="urlrewriter.config.rewriterconfigserializersectionhandler, urlrewriter" />
</configsections>
<httpmodules>
<add type="urlrewriter.modulerewriter, urlrewriter" name="modulerewriter" />
</httpmodules>
<!-- 下面是配置重写url规则 -->
<rewriterconfig>
<rules>
<rewriterrule>
<lookfor>~/products/jurisdiction_(w{3}).aspx</lookfor>
<sendto>~/en/jurisdiction.aspx?jurid=$1</sendto>
</rewriterrule>
<rewriterrule>
<lookfor>~/articles/(d{1,}).aspx</lookfor> <!-- 这个是被代替后的文件名,使用到正则表达式 -->
<sendto><![cdata[~/article_view.aspx?article_id=$1]]></sendto> <!-- 这个是要给代替的网页,一般是带有问号后面带参数的网页 -->
</rewriterrule>
<rewriterrule>
<lookfor>~/articles/(d{1,})_(d{1,}).aspx</lookfor>
<sendto><![cdata[~/article_view.aspx?article_id=$1&page=$2]]></sendto>
</rewriterrule>
<rewriterrule>
<lookfor>~/sell/(.[0-9]*).html</lookfor>
<sendto>~/search/search_sell.aspx?id={getproperty(content)}</sendto>
</rewriterrule>
</rules>
</rewriterconfig>
第三步,加入模块配置(写在<system.web>里面):
<httphandlers>
<add verb="*" path="*.aspx" type="urlrewriter.rewriterfactoryhandler, urlrewriter" />
<add verb="*" path="*.html" type="urlrewriter.rewriterfactoryhandler, urlrewriter" />
</httphandlers>
如果用的是iis7.0,则不用这么麻烦,这个步骤可以简化为:直接在web.config中的节的节中添加上urlrewriter:
<add name="urlrewriter" type="intelligencia.urlrewriter.rewriterhttpmodule, intelligencia.urlrewriter"/>
这会保证所有的请求都会经过asp.net的这个module。
第四步,将html的解析用 asp.net 的isapi来解析(htm或其它后缀操作方法相同):
1、打开iis管理,右击站点属性。
2、切换到“主目录“,点“配置“按纽.
3、打开应用程序配置,点”添加“按纽.
4、在可执行文件处输入asp.net的映射文件,可复制.aspx的映射:如.net 2.0的:c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll
在扩展名处输入:.html,动作限制为:get,head,post,debug ,取消”检查文件是否存在“选项。
如果你的页面有回传。比如说放了datagrid,有分页的,你点到下一页就发现,晕倒,又出问题了。这下怎么办呢,这个其实微软件的网站上就有说到,我在这里简述一下了。
第五步,加入窗体回传保持的组件:
下载 actionlessform.dll 放到你的项目 bin 目录下。然后在你的这个页面中加入:
<%@ register tagprefix="skm" namespace="actionlessform" assembly="actionlessform" %>
再把你的<form...>改为:
<skm:form id="你的表单名" method="post" runat="server">……</skm:form>
urlrewriter.dll下载地址:http://urlrewriter.net/
asp.net iis URLRewrite 实现方法详解的更多相关文章
- asp.net页面之间传值方法详解
asp.net中页面之间传值我们用得最多的就是get,post这两种了,其它的如session,appliction,cookie等这些相对来说少用也不是常用的,只是在特殊情况下在使用了. 1. Ge ...
- URLRewrite 实现方法详解
所谓的伪静态页面,就是指的URL重写,在ASP.NET中实现非常简单首先你要在你的项目里引用两个DLL:ActionlessForm.dll.URLRewriter.dll,真正实现重写的是 URLR ...
- asp.net实现md5加密方法详解
MD5加密简单的说就是把一段明文 通过某种运算方式 求出密文. 例如:明文为:abcdefg 通过一些列运算 得到 密文 7ac66c0f148de9519b8bd264312c4d64 它具有两个特 ...
- Windows系统启动iis方法详解
很多网友一般都用Windows 系统自带的iis服务器来配置web网站,在本地进行调试和修改后才正式上线.虽说操作不难,但是小白来说却无从下手,很多人根本不知道iss在哪,怎么启动,更谈不上配置或者其 ...
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开M ...
- 【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解
原文:[译]ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details ...
- Asp.net中web.config配置文件详解(一)
本文摘自Asp.net中web.config配置文件详解 web.config是一个XML文件,用来储存Asp.NET Web应用程序的配置信息,包括数据库连接字符.身份安全验证等,可以出现在Asp. ...
- session的使用方法详解
session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...
- CURL使用方法详解
php采集神器CURL使用方法详解 作者:佚名 更新时间:2016-10-21 对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...
随机推荐
- Two-phase Termination
本文参阅[http://ifeve.com/java-two-phase-termination/] Two-phase Termination模式简介 停止线程是一个目标简单而实现却不那么简单的任务 ...
- (Problem 14)Longest Collatz sequence
The following iterative sequence is defined for the set of positive integers: n n/2 (n is even) n 3n ...
- 如何抓取Thread Dump小结(转)
当系统性能出现问题时,需要从各个方面来查看网络环境.主机资源.查看最经变更的代码等.如果是想从代码层面解决问题,那么最有效的方法就是查看相关dump文件.如果是使用IBM JDK(我默认你是在aix环 ...
- [置顶] Android4.x对长按电源键(挂断键)和短按电源键(挂断键)的详细处理流程
1. 简介 Android4.x在Framework的PhoneWindowManager对Power(KeyEvent.KEYCODE_POWER)和Home(KeyEvent.KEYCODE_HO ...
- Android 传感器开发
如今的智能手机都配备了各种各样的传感器,本文将介绍Android SDK提供的传感器开发接口,并通过简单实例展示怎样使用这些接口. Andriod SDK传感器相关类 android SDK提供的与传 ...
- UNIX网络编程 卷2:进程间通信
这篇是计算机类的优质预售推荐>>>><UNIX网络编程 卷2:进程间通信(第2版)> UNIX和网络专家W. Richard Stevens的传世之作 编辑推荐 两 ...
- C#动态增加边框
if (this.Width >= 600) { timer1.Enabled = false; } else { this.Width += 30; }
- Oracle时间戳
查询某一具体时间某张表的数据,可以用时间戳进行查询. 例如: SELECT * FROM sac14 AS OF TIMESTAMP to_date('201508310930','yyyymmddh ...
- 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)
作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...
- C--全排列的实现(递归方法) 傻子也能看懂的
假设数组含有n个元素,则提取数组中的每一个元素做一次头元素,然后全排列除数组中除第一个元素之外的所有元素,这样就达到了对数组中所有元素进行全排列的得目的.[这句话才是重点!] 比如 1,2,3.的 ...