最近小项目要求重写url找了下资料用到了MS的2个dll,微软的例子写得太不明显了。后来终于改好了。
ActionlessForm.dll------用来处理回发
URLRewriter.dll----- 是微软封装好了的一个URL重写组件
添加引用----
具体的使用说明请去看
http://msdn.microsoft.com/zh-cn/library/ms972974.aspx#XSLTsection123121120120
比我说得好得多。。
具体使用方法:
首先web.config的配置:
<?
xml version
=
"
1.0
"
?>
<
configuration
>
<
configSections
>
<
section name
=
"
RewriterConfig
"
type
=
"
URLRewriter.Config.RewriterConfigSerializerSectionHandler,
URLRewriter
"
/>
</
configSections
>
<
RewriterConfig
>
<
Rules
>
<
RewriterRule
>
<
LookFor
>~/
ListCategories\.aspx
</
LookFor
>
<
SendTo
>~/
Default.aspx
</
SendTo
>
</
RewriterRule
>
<
RewriterRule
>
<
LookFor
>~/
(\d
+
)\.html
</
LookFor
>
<
SendTo
>~/
Cover.aspx
?
id
=
$
1
</
SendTo
>
</
RewriterRule
>
</
Rules
>
</
RewriterConfig
>
<
system.web
>
<
httpModules
>
<
add type
=
"
URLRewriter.ModuleRewriter, URLRewriter
"
name
=
"
ModuleRewriter
"
/>
</
httpModules
>
<
compilation debug
=
"
true
"
/>
</
system.web
>
</
configuration
>
主要配置的代码是这些。其他的根据自己的需要和.net的版本自行添加。
然后Default.aspx,Cover.aspx,新建2个页面
Default.aspx:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Default.aspx.cs
"
Inherits
=
"
_Default
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
runat
="server"
>
<
title
>
无标题页
</
title
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
a
href
="ListCategories.aspx"
>
ListCategories.aspx
</
a
>
<
a
href
="30.html"
>
30.html
</
a
>
</
div
>
</
form
>
</
body
>
</
html
>
Cover.aspx:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Cover.aspx.cs
"
Inherits
=
"
Cover
"
%>
<%
@ Register TagPrefix
=
"
skm
"
Namespace
=
"
ActionlessForm
"
Assembly
=
"
ActionlessForm
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
runat
="server"
>
<
title
>
Cover
</
title
>
</
head
>
<
body
>
<
skm:form
id
="form1"
runat
="server"
>
<
div
>
Cover页面
<
h4
><
a
href
="javascript:void(0)"
onclick
="history.go(-1)"
>
返回上一页
</
a
></
h4
>
<
asp:Button
ID
="Button1"
runat
="server"
Text
="Button"
/>
</
div
>
</
skm:form
>
</
body
>
</
html
>
Cover.aspx.cs:
using
System;
using
System.Collections;
using
System.Configuration;
using
System.Data;
using
System.Linq;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.HtmlControls;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Xml.Linq;
public
partial
class
Cover : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(Request.QueryString[
"
id
"
]
==
null
)
{
Response.End();
}
else
{
int
id
=
Convert.ToInt32(Request.QueryString[
"
id
"
]);
Response.Write(id);
}
}
}
还要去对iis设置:

这样的话伪静态就可以用了
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll ---这是上面的路径
浏览Default.aspx页
ListCategories.aspx --页面其实在服务器上面是没有的。它里面的内容是Default.aspx的内容,因为配置文件里面设置了
写得有点乱。
本例子是和微软的重写url基本一样的。算是简单化了一点点呵呵。
源代码
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。