利用 UrlRewritingNet 实现伪静态方法

由于要实现无拓展名的伪静态,就是装作文件夹默认页的那种形式。一起在用的urlrewriter不太给力了。

在网上查找实现方法,突然发现了UrlRewritingNet.UrlRewriter.dll 这个开源伪静态组件。

网址:http://www.urlrewriting.net/149/en/home.html

挺好用的,配置简单,文档全,而且不用像之前一样还要弄一个ActionlessForm。按钮的回发问题完美解决。

下面进入正题:

一、引入类库

二、配置webconfig

首先,在<configuration>下添加

<configSections>
      <section name="urlrewritingnet" requirePermission ="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"  />
    </configSections>

接着,仍旧在<configuration>下添加

 <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage = "index.html" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >
   
    <rewrites>
     
      <add name="Rewrite1" virtualUrl="^~/a/index.html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/a.aspx" ignoreCase="true" />
      <add name="Rewrite2" virtualUrl="^~/(.*)/(.*)/(.*).html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/a.aspx?c1=$1&amp;c2=$2&amp;id=$3" ignoreCase="true" />
      <add name="Rewrite3" virtualUrl="^~/(.*)/(.*)/(.*)/index.html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/a.aspx?c1=$1&amp;c2=$2&amp;id=$3" ignoreCase="true" />
    </rewrites>
   
  </urlrewritingnet>

<rewrites>里面就是url重写规则,$参数值,&amp;就是&,defaultPage = "index.html"表示装作默认页的名称,同时伪静态规则里面也得这么写。

最后<system.web>里

<httpModules>
      <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    </httpModules>

二、IIS配置

iis-属性-主目录-配置-插入

c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

确认文件是否存在,去掉勾选。

用心写代码,不辜负程序员之名。
原文地址:https://www.cnblogs.com/thinkingthigh/p/2777352.html