惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - zhanqiangz(闲云野鹤)

在ReportService2005.asmx 找不到 ReportingService2005 类 BizTalk相关的问题,打算持续更新。 恢复被格式化过的硬盘数据 BizTalk - Most possible reason for “is Delimiters are not unique” in EDI transaction What happens if BizTalk artifacts are not GACed? XmlSerializer is not trustable BizTalk - How to create custom functoid. BizTalk - Carefully use Send Port Group BizTalk - How to debug map in VS2005 BizTalk-Get to know functoid. BizTalk - String Functoids 一辈子都忘不了的七夕节 Head First Design patterns笔记-Singleton patterns (从“一夫一妻制社会中婚约的达成”看单件模式) Global.asax文件里的Application_Init能触发吗? Head First Design patterns笔记-Decorator Patterns (从”用不同技能武装自己”看装饰模式) Head First Design patterns笔记-Observer Patterns (从TFS的Project alerts功能看观察者模式) ASP.NET 2.0的编译行为 Head First Design patterns笔记-Strategy Patterns (从不同的人使用不同的交通工具上班看策略模式) 晕菜了,TFS居然把vss里的那个rollback功能cut掉了,还好有人写了工具.
使用HttpApplication实例(翻译)
zhanqiangz(闲云野鹤) · 2007-05-25 · via 博客园 - zhanqiangz(闲云野鹤)

使用HttpApplication实例

在应用程序的整个生命周期,ASP.NET都会维护一个由Global.asax派生(Global.asax-derived)出来的HttpApplication实例的池.当应用程序接到一个http请求,asp.net页面框架就会指派其中的一个HttpApplication实例来处理请求.这个特定的HttpApplication实例会负责管理这个请求的整个生命周期.这个实例也只能在当前请求完成后才可以被重用.通过HttpApplication类你可以通过编程的方式来访问HttpApplication.InitHttpApplication.Dispose 方法以及Application_OnStart Application_OnEnd 事件,并且你可以访问HttpModule的一些公开事件.(:msdnIHttpModule相关文档中可以看到这个接口只有两个公开的方法接口一个是Dispose另一个是Init.)

重写InitDispose方法

HttpApplication.Init 方法在创建一个HttpApplication类的新实例后马上就触发.你可以使用这个方法来创建和配置任何你想在所有处理事件(l handling events)中使用的对象,看下面的代码实例.

[Visual Basic]

<script language="VB" runat="server">
 Public Overrides Sub Init()
'Insert something interesting here.
 End Sub
</script>

[C#]
<script language="C#" runat="server">
public override void Init()
 {
 // Insert something interesting here.
}
</script>

Init方法和Application_OnStart事件是不同的,因为在应用程序的所有HttpApplication实例都会调用它.Application_OnStart在应用程序的整个生命周期中只触发一次,也就是在第一个HttpApplication实例创建的时候触发.Application_OnStart只是用来创建或者修改所有管道实例(pipeline instances)共享的状态,比如使用ApplicationState对象.不用使用它创建局部变量,因为局部变量不能被多个HttpApplication实例共享. HttpApplication.Dispose 方法在一个HttpApplication类的实例被销毁的时候马上触发.它可以用来清理任何本地资源(local resources). Dispose方法和Application_OnEnd事件也不相同,因为它可以被整个应用程序中所有的HttpApplication实例调用. Application_End在整个应用程序的生命周期中只调用一次,也就是在最后一个HttpApplication实例被销毁的时候触发. Application_OnEnd只能用来清理被所有管道实例共享的状态或者资源.,比如ApplicationState对象.不要用它来清理局部变量,因为局部变量并不是被多个HttpApplication共享的.你不能使用在InitDispose中使用HttpApplication实例的Request, Response, Session .

下面的例子演示了如何重写由HttpApplication基类提供的这两个生命周期方法(two life cycle methods).

 [Visual Basic]

<script language="VB" runat=server>
Public Overrides Sub Init()
 ' Init override code goes here.
End Sub

Public
Overrides Sub Dispose()
' Init override code goes here.
End Sub
</script>

[C#]
<script language="C#" runat=server>
public override void Init()
{
// Init override code goes here.
}

public override void Dispose()
{
// Init override code goes here.
}
</script>

处理HttpApplication的事件

你可以使用Global.asax文件同步由HttpApplication 基类提供得任何事件.要实现这个,你必须使用下面的命名模式来书写一个方法.

Application_EventName(AppropriateEventArgumentSignature)

例如,如果你想让代码对应用程序中的OnStart, BeginRequest, OnEnd事件做出响应.Global.asax文件中的代码看起来是这样的.

[Visual Basic]

<Script language="VB" runat="server">
Sub Application_OnStart()
'Application start-up code goes here.
End Sub

Sub Application_BeginRequest()
'Application code for each request could go here.
End Sub

Sub
Application_OnEnd()
'Application clean-up code goes here.
End Sub
</script>

[C#]
<Script language="C#" runat="server">
public void Application_OnStart()
{
// Application start-up code goes here.
}

public
void Application_BeginRequest()
{
// Application code for each request could go here.
}

public
void Application_OnEnd()
{
// Application clean-up code goes here.
}
</script>

阅读原文(Working with HttpApplication instances)