读书片断之 开发自定义HTTP模块
阅读这本书第八章《ASP.NET请求处理框架》
8.6 开发自定义HTTP模块
以下的代码片断是为了实现一个支持URL重写的HTTP模块。
多数的Web应用程序使用查询字符串在一个页面和另一个页面之间传输数据。这会给用户记忆和使用URL带来困难。
如:http://localhost/Articles/Ariticles.aspx?AuthorName=Smith
这样的URL不易记忆,且可能导致各种可用性问题。如果允许使用以下URL来访问一页面,那么站点访问者将感到更加轻松:
http://localhost/Articles/Smith.aspx
HTTP模块ArticlesModule
8.6 开发自定义HTTP模块
以下的代码片断是为了实现一个支持URL重写的HTTP模块。
多数的Web应用程序使用查询字符串在一个页面和另一个页面之间传输数据。这会给用户记忆和使用URL带来困难。
如:http://localhost/Articles/Ariticles.aspx?AuthorName=Smith
这样的URL不易记忆,且可能导致各种可用性问题。如果允许使用以下URL来访问一页面,那么站点访问者将感到更加轻松:
http://localhost/Articles/Smith.aspx
HTTP模块ArticlesModule
1
using System;
2
using System.Text.RegularExpressions;
3
using System.Web;
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
namespace HttpModuleTest
6
{
7
/// <summary>
8
/// This Class finish URL rewriting.
9
/// </summary>
10
public class ArticlesModule : IHttpModule
11
{
12
public ArticlesModule()
13
{
14
//
15
// TODO: Add constructor logic here
16
//
17
}
18![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
public void Init(HttpApplication context)
20
{
21
context.BeginRequest += new EventHandler(context_BeginRequest);
22
}
23![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
public void Dispose()
25
{
26![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
}
28![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
private void context_BeginRequest(object sender, EventArgs e)
30
{
31
HttpApplication app = sender as HttpApplication;
32
HttpContext context = app.Context;
33![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
Regex regex = new Regex(@"Articles/(.*)\.aspx", RegexOptions.IgnoreCase);
35
Match match = regex.Match(context.Request.Path);
36![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
if (match.Success)
38
{
39
string newPath = regex.Replace(context.Request.Path, @"Articles.aspx?AuthorName=$1");
40
context.RewritePath(newPath);
41
}
42
}
43
}
44
}
45![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)