利用 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&c2=$2&id=$3" ignoreCase="true" />
<add name="Rewrite3" virtualUrl="^~/(.*)/(.*)/(.*)/index.html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/a.aspx?c1=$1&c2=$2&id=$3" ignoreCase="true" />
</rewrites>
</urlrewritingnet>
<rewrites>里面就是url重写规则,$参数值,&就是&,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
确认文件是否存在,去掉勾选。