推荐:如何用.NET读取 Flash格式文件信息
一直以来存在这么一个问题,就是当用户上传的Flash文件时都需要附带输入Flash的宽和高,否则显示的时候由于不知道这些数值而导致Flash比例不正常。
近日我做网站也涉及到了这方面的问题
正如2.2中所提到的,这里主要是生成一个HttpApplication对象:
以下为引用的内容:
internal static string GetApplicationFile()
{
return Path.Combine(HttpRuntime.AppDomainAppPathInternal,
"global.asax");
}
|
首先会查看是否存在global.asax文件,如果有的话就用它来生成HttpApplication对象,从这里我们可以看到global.asax的文件名是在asp.net的框架中写死的,不能修改的。如果这个文件不存在就使用默认的对象。
创建好HttpApplication之后对它进行初始化:
以下为引用的内容:
application = (HttpApplication)
HttpRuntime.CreateNonPublicInstance(this._theApplicationType);
using (ApplicationImpersonationContext context2 = new
ApplicationImpersonationContext())
{
application.InitInternal(context, this._state,
this._eventHandlerMethods);
}
|
四、HttpApplication这个是比较复杂也比较重要的一个对象首先是执行初始化操作,比较重要的一步就是进行HttpModule的初始化:
以下为引用的内容:
private void InitModules()
{
this._moduleCollection =
RuntimeConfig.GetAppConfig().HttpModules.CreateModules();
this.InitModulesCommon();
}它会读取web.config中所有HttpModule的配置
在HookupEventHandlersForApplicationAndModules方法中绑定Module的事件处理
|
程序接着进行事件实际绑定:
以下为引用的内容:
if (HttpRuntime.UseIntegratedPipeline)
{
this._stepManager = new PipelineStepManager(this);
}
else
{
this._stepManager = new ApplicationStepManager(this);
}
this._stepManager.BuildSteps(this._resumeStepsWaitCallback);
在ApplicationStepManager的BuildSteps方法中可以看到事件的绑定执行顺序:
app.CreateEventExecutionSteps(HttpApplication.EventBeginRequest,
steps);
app.CreateEventExecutionSteps(HttpApplication.EventAuthenticateRequest,
steps);
app.CreateEventExecutionSteps(HttpApplication.EventDefaultAuthenticatio
n, steps);
app.CreateEventExecutionSteps(HttpApplication.EventPostAuthenticateRequ
est, steps);
app.CreateEventExecutionSteps(HttpApplication.EventAuthorizeRequest,
steps);
app.CreateEventExecutionSteps(HttpApplication.EventPostAuthorizeRequest
, steps);
app.CreateEventExecutionSteps(HttpApplication.EventResolveRequestCache,
steps);
app.CreateEventExecutionSteps(HttpApplication.EventPostResolveRequestCa
che, steps);
steps.Add(new HttpApplication.MapHandlerExecutionStep(app));
app.CreateEventExecutionSteps(HttpApplication.EventPostMapRequestHandle
r, steps);
app.CreateEventExecutionSteps(HttpApplication.EventAcquireRequestState,
steps);
app.CreateEventExecutionSteps(HttpApplication.EventPostAcquireRequestSt
ate, steps);
app.CreateEventExecutionSteps(HttpApplication.EventPreRequestHandlerExe
cute, steps);
steps.Add(new HttpApplication.CallHandlerExecutionStep(app));
app.CreateEventExecutionSteps(HttpApplication.EventPostRequestHandlerEx
ecute, steps);
app.CreateEventExecutionSteps(HttpApplication.EventReleaseRequestState,
steps);
app.CreateEventExecutionSteps(HttpApplication.EventPostReleaseRequestSt
ate, steps);
steps.Add(new HttpApplication.CallFilterExecutionStep(app));
app.CreateEventExecutionSteps(HttpApplication.EventUpdateRequestCache,
steps);
app.CreateEventExecutionSteps(HttpApplication.EventPostUpdateRequestCac
he, steps);
this._endRequestStepIndex = steps.Count;
app.CreateEventExecutionSteps(HttpApplication.EventEndRequest, steps);
steps.Add(new HttpApplication.NoopExecutionStep());
|
原文地址:http://bbs.mb5u.com/Design/thread-1167995-1-1.html
分享:解析VC.NET扩展Windows磁盘清理工具的功能
摘 要 介绍了Windows磁盘清理工具二次开发的扩展接口,对其COM接口加以分解,并运用ATL库具体实现了清理“*.tmp”临时文件的功能。
关键词 磁盘清理工具、ATL库、COM接口。