【转】网卡驱动注册到PCI总线这一过程的分析
PCI总线
diff和patch使用指南
Windows 平台下构建Android 开发环境
linux 如何使用大于2T的块设备
PCI设备驱动 三
CFI Flash, JEDEC Flash ,Parellel Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系
使用initramfs启动Linux成功
glibc 各个库作用介绍
Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或HTTP模块所引发的应用程序级别和会话级别事件的代码。Global.asax 文件驻留在 ASP.NET 应用程序的根目录中。运行时,分析 Global.asax 并将其编译到一个动态生成的 .NET Framework 类,该类是从HttpApplication基类派生的。配置 ASP.NET,以便自动拒绝对 Global.asax 文件的任何直接的 URL 请求;外部用户不能下载或查看其中的代码。Global.asax 文件是可选的。只在希望处理应用程序事件或会话事件时,才应创建它.
Global.asax文件主要用来处理更高级别的应用程序事件,如Application_Start、Application_End、Session_Start、Session_End等。开发人员使用位于特定Web应用程序根目录下的Global.asax文件来创作此逻辑。第一次激活或请求应用程序命名空间内的任何资源或URL时,ASP.NET会将其Global.asax文件编译为从HttpApplication类派生而来的一个类。
global.asax的方法介绍:
Global.asax.cs中的方法的含义
Application_Init:在每一个HttpApplication实例初始化的时候执行
Application_Disposed:在每一个HttpApplication实例被销毁之前执行
Application_Error:所有没有处理的错误都会导致这个方法的执行
Application_Start:在程序初始化的时候执行。在Web应用程序的生命周期里就执行一次,这里只能放一些公用的信息,比如HttpApplicationState。
Application_End:应用程序结束时,在最后一个HttpApplication销毁之后执行。对应Application_Start,在整个生命周期里面也是只执行一次。
Session_Start:会话开始时执行。
Session_End:会话结束或过期时执行。
Application_BeginRequest:BeginRequest是在收到Request时第一个触发的事件,这个方法第一个执行。
Application_AuthenticateRequest:当安全模块已经建立了当前用户的标识后执行。
Application_AuthorizeRequest:当安全模块已经验证了当前用户的授权时执行。
Application_ResolveRequestCache:当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。
Application_AcquireRequestState:当ASP.NET获取当前请求所关联的当前状态(如Session)时执行。
Application_PreRequestHandlerExecute:当ASP.Net即将把请求发送到处理程序对象(页面或者是WebService)之前执行。这个时候,Session就可以用了。
Application_PostRequestHandlerExecute:当处理程序对象工作完成后执行。
Application_ReleaseRequestState:在ASP.NET执行完所有请求处理程序后执行。ReleaseRequestState事件将使当前状态数据被保存。
Application_UpdateRequestCache:在ASP.NET执行完处理程序后为了后续的请求而更新响应缓存时执行。
Application_EndRequest:同上,EndRequest是在响应Request时最后一个触发的事件,这个方法自然就是最后一个执行的了。
Application_PreSendRequestHeaders:向客户端发送Http标头之前执行。
Application_PreSendRequestContent:向客户端发送Http正文之前执行。
Request相应的事件执行顺序:
1.BeginRequest
2.AuthenticateRequest
3.AuthorizeRequest
4.ResolveRequestCache
5.AcquireRequestState
6.PreRequestHandlerExecute
7.PostRequestHandlerExecute
8.ReleaseRequestState
9.UpdateRequestCache
10.EndRequest
注释:这个文件是可以满足一些应用程序级代码的逻辑需求。
void Application_Start(object sender, EventArgs e)
{
}
是只有在第一次运行的时候才执行,在整个应用程序周期只执行一次,当重启后IIS不一定会执行,IIS还把数据保存在内存中?只有修改了文件,再接到第一个请求的时候会执行。所以当这个已经执行过一遍,后面不管谁发起访问都不会再执行这个事件。
如果你需要每个发起每个人每个访问都运行那么应该写到
void Session_Start(object sender, EventArgs e)
{
HttpContext.Current.Session.Timeout = Convert.ToInt32(ConfigurationManager.AppSettings["SessionTimeOut"]);
}
2.COOKIE
这个保存在客户端的信息,用户清除了本机上的COOKIE文件或过期了就没有了。
保存在客户端,通过 Expries 设置有效期(可长可短,默认关闭浏览器cookie即失效)。
新建项并赋值
Response.Cookies["ckName"].Value = "Sutdent";
Response.Cookies["ckName"].Expires = DateTime.Now.AddSeconds(10); // 如果不设置过期时间,默认关闭浏览器该cookie即失效
新建项,为不同子键赋值
Response.Cookies["ckAge"]["boy"] = "25";
Response.Cookies["ckAge"]["girl"] = "22";
Response.Cookies["ckAge"].Expires = DateTime.Now.AddHours(1);
// Response.Cookies["ckAge"].Expires = DateTime.Now.AddHours(-1); // 通过设置过期时间来清除cookie
3.CACHE
应用程序级变量,存于服务器缓存中被所有用户共享,由系统自动分配和回收,使用Cache["name"]==null?判断是否过期。
Cache["number"] = "65464646";
Cache["ca"] = "aaa";
Cache["cb"] = "bbb";
lbNumber.Text +="OldCache value:"+ Cache["number"].ToString();
清空缓存
IDictionaryEnumerator ide = Cache.GetEnumerator();
while (ide.MoveNext())
{
Cache.Remove(ide.Key.ToString());
}
lbNumber.Text += "点击清空后的cache数量:" + Cache.Count;
在客户端是无法清空和刷新的,如果要的话可能要修改WEB.CONFIG和IIS的重启,或者提供页面方法,触发清楚
4.SESSION
页面级变量,保存在服务器端,通过 Timeout 设置超时时间(可长可短,默认30分钟)。
系统为每位访问者自动分配一个 sessionid(超时重新分配),使之互不影响,生命周期与访问者会话时间相同。
Session["scName"] = string.IsNullOrEmpty(scName.Value)?"default session string":scName.Value;
Session.Timeout = 11; // 时间单位是分钟
lbSession.Text = Session["scName"].ToString();
通过项名称删除 session
Session.Remove("scName"); // 删除单条session
Session.Clear(); // 清空session
lbSession.Text = "session is clesred, please refreash.";