ASP.NET自定义模块
来源:互联网 发布:怎样加入网络直销 编辑:程序博客网 时间:2024/06/04 18:31
要创建自定义模块,类需要实现IHttpModule接口。这个接口定义了Init和Dispose方法。
Init方法在启动Web应用程序时调用,其参数的类型是HttpContext,可以添加应用程序处理事件。
新建类库ModuleSample,新建类SampleModule添加如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using
System;
using
System.Collections.Generic;
using
System.IO;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
using
System.Web;
namespace
ModuleSample
{
public
class
SampleModule : IHttpModule
{
private
const
string
allowAddressesFile =
"AllowedAddresses.txt"
;
private
List<
string
> allowAddressesList;
public
void
Dispose()
{
throw
new
NotImplementedException();
}
public
void
Init(HttpApplication context)
{
context.LogRequest +=
new
EventHandler(OnLogRequest);
context.BeginRequest += BeginRequest;
context.PreRequestHandlerExecute += PreRequestHandlerExecute;
}
private
void
BeginRequest(
object
sender, EventArgs e)
{
LoadAddresses((sender
as
HttpApplication).Context);
}
private
void
LoadAddresses(HttpContext context)
{
if
(allowAddressesList ==
null
)
{
string
path = context.Server.MapPath(allowAddressesFile);
allowAddressesList = File.ReadAllLines(path).ToList();
}
}
private
void
PreRequestHandlerExecute(
object
sender, EventArgs e)
{
HttpApplication app = sender
as
HttpApplication;
HttpRequest request = app.Context.Request;
if
(!allowAddressesList.Contains(request.UserHostAddress))
{
throw
new
HttpException(403,
"IP address denied"
);
}
}
public
void
OnLogRequest(Object source, EventArgs e)
{
//custom logging logic can go here
}
}
}
在WebConfig中配置:
1
2
3
4
5
6
7
8
9
<system.webServer>
<handlers>
<add name=
"CustomHandler"
verb=
"*"
path=
"CallCustomHandler"
type=
"SampleHandler.CustomHandler,SampleHandler"
/>
<add name=
"InfoHandler"
verb=
"GET"
path=
"CallInfoHandler.axd"
type=
"SampleHandler.InfoHandler,SampleHandler"
/>
</handlers>
<modules>
<add name=
"SampleModule"
type=
"ModuleSample.SampleModule,ModuleSample"
/>
</modules>
</system.webServer>
程序执行图:
运行时
0 0
- ASP.NET自定义模块
- asp.net 自定义分页
- Asp.net自定义控件
- asp.net 自定义分页
- asp.net自定义控件
- asp.net自定义控件
- asp.net 自定义控件
- ASP.NET自定义控件
- ASP.net自定义控件
- Asp.net 自定义控件
- asp.net自定义控件
- ASp.NET 自定义session
- 自定义MembershipProvider来利用Asp.net 2.0 Login控件的登陆和修改密码模块
- 自定义MembershipProvider来利用Asp.net 2.0 Login控件的登陆和修改密码模块
- ASP.NET生命周期中的验证以及身份验证模块(理解以后可以自定义验证方法)
- ASP.Net常用模块整理
- 投票统计模块(asp.net)
- asp.net运行时模块
- 统计web应用程序的访问人数
- 【数据压缩】WAV文件格式
- 装系统
- NYOJ_1294_物资调度【搜索】
- 动态规划练习一 21:三角形最佳路径问题
- ASP.NET自定义模块
- javascript原型继承中this
- (codeforces)A. Bear and Friendship Condition
- mysql设置远程访问
- LeetCode#342. Power of Four
- ASP.NET自定义处理程序
- 小白学前端Day1
- Android中error inflating class fragment问题
- Android 实现简单的刮刮乐