不帅 发表于 2015-1-16 14:24:28

NET网页编程之ASP.NET 主要工具 HttpApplication 详解

不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……后面在解说怎样经由过程RewritePath办法重写Url地点完成伪静态时用到了HttpApplication工具,本章次要对该工具举行详解

MSDN:界说ASP.NET使用程序中的一切使用程序工具共有的办法、属性和事务。
注重:HttpApplication非Page属性Application(HttpApplicationState),Application为其属性。
此类是用户在Global.asax文件中所界说的使用程序的基类。
HttpApplication类的实例是在ASP.NET基本布局中创立的,而不是由用户间接创立的。
利用HttpApplication类的一个实例来处置其保存期中收到的浩瀚哀求。
可是,它每次只能处置一个哀求。如许,成员变量才可用于存储针对每一个哀求的数据。
使用程序激发的事务能够由完成IHttpModule接口的自界说模块处置,也能够由Global.asax文件中界说的事务处置程序代码处置。
能够将完成IHttpModule接口的自界说模块放在App_Code文件夹中,也能够放在Bin文件夹下的某个DLL中。
HttpApplication是在.NETFramework3.5版中引进的。

HttpApplication属性(只读):
·HttpApplicationStateApplication:猎取使用程序确当前形态。概况
·HttpContextContext:猎取关于以后哀求的HTTP特定信息。
·HttpSessionStateSession:猎取供应对会话数据的会见的外部会话工具。概况
·HttpRequestRequest:猎取以后哀求所对应的外部哀求工具。
·HttpResponseResponse:猎取以后哀求所对应的外部呼应工具。
·HttpServerUtilityServer:猎取以后哀求所对应的外部服务器工具。
·ISiteSite:猎取或设置IComponent完成的网站接口。
·IPrincipalUser:猎取以后哀求的外部用户工具。
·EventHandlerListEvents:猎取处置一切使用程序事务的事务处置程序托付列表。
·HttpModuleCollectionModules:猎取以后使用程序的模块汇合。

HttpApplication事务激发按次:
·BeginRequest:在ASP.NET呼应哀求时作为HTTP实行管线链中的第一个事务产生。
·AuthenticateRequest:当平安模块已创建用户标识时产生。
·PostAuthenticateRequest:当平安模块已创建用户标识时产生。
·AuthorizeRequest:当平安模块已考证用户受权时产生。
·PostAuthorizeRequest:在以后哀求的用户已获受权时产生。
·ResolveRequestCache:在ASP.NET完成受权事务以使缓存模块从缓存中为哀求供应服务后产生,从而绕过事务处置程序(比方某个页或XMLWebservices)的实行。
·PostResolveRequestCache:在ASP.NET跳过以后事务处置程序的实行并同意缓存模块满意来自缓存的哀求时产生。
·MapRequestHandler:基本布局。在选择了用来呼应哀求的处置程序时产生。假如服务器在集成形式下运转IIS7.0而且.NETFramework最少为3.0版本,则会激发该事务。假如服务器在典范形式下运转IIS7.0大概运转的是较早版本的IIS,则没法处置此事务。
·PostMapRequestHandler:在ASP.NET已将以后哀求映照到响应的事务处置程序时产生。
·AcquireRequestState:当ASP.NET猎取与以后哀求联系关系确当前形态(如会话形态)时产生。
·PostAcquireRequestState:在已取得与以后哀求联系关系的哀求形态(比方会话形态)时产生。
·PreRequestHandlerExecute:刚好在ASP.NET入手下手实行事务处置程序(比方,某页或某个XMLWebservices)前产生。
·PostRequestHandlerExecute:在ASP.NET事务处置程序(比方,某页或某个XMLWebservice)实行终了时产生。
·ReleaseRequestState:在ASP.NET实行完一切哀求事务处置程序后产生。该事务将使形态模块保留以后形态数据。
·PostReleaseRequestState:在ASP.NET已完成一切哀求事务处置程序的实行而且哀求形态数据已存储时产生。
·在激发PostReleaseRequestState事务以后,现有的一切呼应选择器都将对输入举行选择。
·UpdateRequestCache:当ASP.NET实行完事务处置程序以使缓存模块存储将用于从缓存为后续哀求供应服务的呼应时产生。
·PostUpdateRequestCache:在ASP.NET完成缓存模块的更新并存储了用于从缓存中为后续哀求供应服务的呼应后,产生此事务。
·LogRequest:刚好在ASP.NET为以后哀求实行任何纪录之前产生。仅在IIS7.0处于集成形式而且.NETFramework最少为3.0版本的情形下才撑持此事务。
·PostLogRequest:在ASP.NET处置完LogRequest事务的一切事务处置程序后产生。仅在IIS7.0处于集成形式而且.NETFramework最少为3.0版本的情形下才撑持此事务。
·EndRequest:在ASP.NET呼应哀求时作为HTTP实行管线链中的最初一个事务产生。

别的事务
·Disposed:在开释使用程序时产生。
·Error:当激发未经处置的非常时产生。

上面的示例演示怎样创立自界说HTTP模块并将AcquireRequestState事务毗连到该HTTP模块。HTTP模块将截获对Web使用程序资本的一切哀求,从而使您能够选择客户端哀求。预订HttpApplication事务的任何HTTP模块都必需完成IHttpModule接口。

附:HTTP模块先容,说白了就是自界说一个事务监听HttpApplication事务。

以下源码,监听一切猎取哀求形态事务。
usingSystem;
usingSystem.Web;

namespaceSamples.AspNet.CS
{
publicclassCustomHTTPModule:IHttpModule
{
publicCustomHTTPModule()
{
//Classconstructor.
}

//ClassesthatinheritIHttpModule
//mustimplementtheInitandDisposemethods.
publicvoidInit(HttpApplicationapp)
{
//猎取哀求形态时实行app_AcquireRequestState办法
app.AcquireRequestState+=newEventHandler(app_AcquireRequestState);

//猎取哀求形态以后实行app_PostAcquireRequestState办法
app.PostAcquireRequestState+=newEventHandler(app_PostAcquireRequestState);
}

publicvoidDispose()
{
//Addcodetocleanupthe
//instancevariablesofamodule.
}

//DefineacustomAcquireRequestStateeventhandler.
publicvoidapp_AcquireRequestState(objecto,EventArgsea)
{
HttpApplicationhttpApp=(HttpApplication)o;
HttpContextctx=HttpContext.Current;
ctx.Response.Write("ExecutingAcquireRequestState");
}

//DefineacustomPostAcquireRequestStateeventhandler.
publicvoidapp_PostAcquireRequestState(objecto,EventArgsea)
{
HttpApplicationhttpApp=(HttpApplication)o;
HttpContextctx=HttpContext.Current;
ctx.Response.Write("ExecutingPostAcquireRequestState");
}
}
}


注:在自界说HTTP模块中的事务能够产生之前,必需先修正Web.config文件中的设置设置,关照ASP.NET有关该HTTP模块的信息。上面的示例演示Web.config文件的httpModules节中的响应设置设置。
以下设置合用于IIS7.0典范形式和较早的IIS版本。
<configuration>
<system.web>
<httpModules>
<addtype="Samples.AspNet.CS.CustomHTTPModule"
name="CustomHttpModule"/>
</httpModules>
</system.web>
</configuration>·以下设置合用于IIS7.0集成形式。
<configuration>
<system.webServer>
<modules>
<addtype="Samples.AspNet.CS.CustomHTTPModule"
name="CustomHttpModule"/>
</modules>
</system.webServer>
</configuration>
数据挖掘有点高深的,主要估计就是使用一些算法提取一些实用的数据。学好数据挖掘的话可以应聘baidu或者google,但是一般人家对算法的要求听高的。你最好还是学点应用型的吧。这种主要是研究型的。

海妖 发表于 2015-1-18 14:01:17

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

再现理想 发表于 2015-1-24 23:21:06

对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。

老尸 发表于 2015-2-2 16:32:21

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

愤怒的大鸟 发表于 2015-2-8 02:19:42

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

柔情似水 发表于 2015-2-24 03:33:55

ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。

不帅 发表于 2015-3-7 10:45:43

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

乐观 发表于 2015-3-15 02:59:21

asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!

因胸联盟 发表于 2015-3-21 19:08:18

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
页: [1]
查看完整版本: NET网页编程之ASP.NET 主要工具 HttpApplication 详解