asp.net iis URLRewrite 实现方法详解

简介: 原文 asp.net iis URLRewrite 实现方法详解 实现非常简单首先你要在你的项目里引用两个dll:actionlessform.dll、urlrewriter.dll,真正实现重写的是 urlrewriter.dll   但是如果你要实现分页,那么必须使用这个actionlessform .dll。

原文 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/

目录
相关文章
|
3月前
|
开发框架 安全 .NET
IIS服务器发布ASP.NET项目
对于云服务器,程序员一般不会陌生,如果项目需要发布到现网,那么服务器是必不可缺的一项硬性条件,那么如何在云服务器上部署一个项目,需要做哪些配置准备,下面就由本文档为大家讲解,本篇以IIS服务器发布ASP.NET项目为例。
47 1
|
6月前
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
551 0
|
9月前
|
安全 API 开发者
让IIS支持.NET Web Api PUT和DELETE请求
让IIS支持.NET Web Api PUT和DELETE请求
|
9月前
|
开发框架 .NET
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"
|
9月前
|
开发框架 .NET Windows
iis正确安装了,但是还是无法访问,这是iis和.net安装顺序问题,记录一下
iis正确安装了,但是还是无法访问,这是iis和.net安装顺序问题,记录一下
|
10月前
|
C#
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
122 0
|
11月前
|
开发框架 .NET Apache
301重定向代码合集(iis,asp,php,asp.net,apache)
301重定向代码合集(iis,asp,php,asp.net,apache)
274 0
|
11月前
|
网络协议 安全 网络安全
IIS支持的web认证方法
IIS支持的web认证方法
107 0
|
SQL 数据可视化 BI
十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法
.net core操作ES进行读写数据操作在Package包项目下,新增NEST包。注意,包版本需要和使用的ES的版本保持一致,可以避免因为不兼容所导致的一些问题。例如我本机使用的ES版本是7.13版本,所以我安装的NEST包也是7.13版本:
621 0
十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法
|
开发框架 程序员 API
【C#】.net core2.1,通过扩展状态代码页方法对404页面进行全局捕抓并响应信息
在开发一个网站项目时,除了异常过滤功能模块,还需要有针对404不存在的api接口和页面处理功能 本篇文章就来讲讲,如何自定义全局请求状态类来统一处理
184 0