ASP.NET中的Application

1、 Application是用于保存所有用户共有的信息。在ASP时代,如果要保存的数据在应用程序生存期内不会或者很少改变,那么使用Application是理想的选择。但是在ASP。NET开发环境中,程序员通常把类似的配置数据放在Web.config中。如果要使用Application,要注意所有的写操作度都要在Global.asax文件中的Application_OnStart事件中完成。

  //下面的代码是在Global.asax文件中设置
Application.Lock();
Application[“UserId”]=”Hello kitty”;
Application.UnLock();
// 以下是在页面中调用Application
String UserId=Application[“UserId”].ToString();

2、Application的特性:

1、信息量大小为任意大小

2、应用于整个应用程序/所有用户

3、保存在服务器端

4、作用域和保存时间是在整个应用程序的生命期

3、如果在应用程序中使用Application对象,一个需要考虑的问题就是任何写操作都要在Global文件中的Application_OnStart事件中完成。尽管使用了Application.Lock()和Application.UnLock()方法来避免同步操作,但是由于它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性能瓶颈,因此最好不要在此对象中保存大的数据集合。

4、下面使用Application实现在线用户统计,记录同时现在人数和网站总访问人数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.IO;
using System.Web.SessionState;
/// <summary>
///Global 的摘要说明
/// </summary>
public class Global : System.Web.HttpApplication
{
private System.ComponentModel.IContainer component = null;//必要的设计器变量
private FileStream fileStream;
private StreamReader reader; //读字符流
private StreamWriter writer;//写字符流 /// <summary>
/// 网站程序启动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_Start(object sender, EventArgs e)
{
Application["currentUser"] = ;//初始化在线用户
//加载文件流,如果文件不存在则创建文件
fileStream = new FileStream(Server.MapPath("~/count.txt"), FileMode.OpenOrCreate);
reader = new StreamReader(fileStream);//使用流读取文件
Application["AllUser"] = Convert.ToInt32(reader.ReadLine());//将文件中的记录存入总访问数中
reader.Close();//关闭流
} /// <summary>
/// 会话开始 ,当用户访问网站时,在线用户+1,总访问数+1
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Session_Start(object sender, EventArgs e)
{
Application.Lock();//锁定,防止同时录入
Application["currentUser"] = (int)Application["currentUser"] + ;
Application["AllUser"] = (int)Application["AllUser"] + ;
fileStream = new FileStream(Server.MapPath("~/count.txt"), FileMode.OpenOrCreate, FileAccess.Write);
//写入流
writer = new StreamWriter(fileStream);
//把总访问数再次写入count.txt文件中
writer.WriteLine(Application["AllUser"].ToString());
writer.Close();//关闭写入流
Application.UnLock();//解开锁定
}
/// <summary>
/// 会话结束
/// </summary>
protected void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["currentUser"] = (int)Application["currentUser"] - ;
Application.UnLock();
}
}

ASP.NET的Application简介1的更多相关文章

  1. You may receive an exception when you browse a .NET Framework 2.0 ASP.NET Web application

    SYMPTOMS When you browse a Microsoft .NET Framework 2.0 ASP.NET Web application, you may receive one ...

  2. ASP.NET中application对象

    ASP.NET中application对象的使用. Application对象的应用  1.使用Application对象保存信息  (1).使用Application对象保存信息  Applicat ...

  3. Your First ASP.NET 5 Application on a Mac

    Your First ASP.NET 5 Application on a Mac By Daniel Roth, Steve Smith, Rick Anderson ASP.NET 5 is cr ...

  4. ASP.NET 使用application和session对象写的简单聊天室程序

    ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览 ...

  5. [转]剖析ASP.Net MVC Application

    http://www.cnblogs.com/errorif/archive/2009/02/13/1389927.html 为了完全了解Asp.net MVC是怎样工作的,我将从零开始创建一个MVC ...

  6. asp.net中application,cookies,stateview,session的使用

    Cookie Cookie的用法也和ASP中差不多.比如我们建立一个名为aspcn,值为飞刀的cookie HttpCookie cookie = new HttpCookie["aspcn ...

  7. First ASP.NET Core Application on a Mac Using Visual Studio Code

    一直希望可以在mac上直接编写webapp (用C#)现在终于伴随着 core 世界美好了,不需要用pd windows了 nice. Visual studio code 更新1.1版本了 怀着激动 ...

  8. 源码学习之ASP.NET MVC Application Using Entity Framework

    源码学习的重要性,再一次让人信服. ASP.NET MVC Application Using Entity Framework Code First 做MVC已经有段时间了,但看了一些CodePle ...

  9. ASP.NET之Application、Session和Cookie的差别

    在Asp.net中Application.Session和Cookie都能够保存信息,那么它们有什么不同呢? 一.首先Application是在server端建立一个状态变量,存储于server的全局 ...

随机推荐

  1. (转)Windows Server 2008 默认"照片库查看器" 无法打开图片, 只能用画图程序打开

    1.解决[启用Win2008照片查看器] Win2008 中放了一些图片,本来以为可以象Win7那样直接用“照片查看器”打开,可是Win2008默认竟然是用“画图”打开的,非常不方便. 再仔细一看,“ ...

  2. 操作Action

    Action就是Controller的一个方法 包含对应请求的最终结果 Action里代码从Model层拿到数据 最后把数据结果Actionresult 返回用户

  3. PHP 日期格式化 参数参考

    a - "am" 或是 "pm" A - "AM" 或是 "PM" d - 几日,二位数字,若不足二位则前面补零; 如: ...

  4. Android成长记(1)-----android环境搭建与adb shell 命令

    整理一下学习android一步一步存下来的自己总结或是从网上摘抄的比较不错的文档,电脑要上交了,最舍不得的就是自己积累的这么点东西了,所以决定发布到黎梓小站,以供大家一起学习以及自己日后忘记了也有地方 ...

  5. forward 和redirect的区别

    1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地 ...

  6. CSS3笔记(一)

    最开始的时候 CSS3产生的一个新属性是一个浏览器的私有的,然后W3C 可能会拿来采用做个标准,再没公布标准之前就只能用私有属性(加前缀)来表达各自厂商的实现,主要是CSS3刚出现那会儿,它暗示该CS ...

  7. -webkit-appearance: none;

    今天在web群里聊天的时候,发现了这个东东,我好像不怎么认识他,于是查了下关于他的信息: 抄的例子, ----------- IOS环境下的按钮都是经过美化的,但通常我们在设计web app的时候不需 ...

  8. file_get_contents 获取不了网页内容

    服务器在做验签的过程中,经常需要向渠道服务器获取某个用户的信息.一般有两种方法,curl和file_get_contents. 一般情况下,像这样用,不会有问题. public function Oa ...

  9. linux tar使用

    Linux  tar指令简单使用 -c:创建包,-x:解压或解包(-c和-x可理解为互逆运算),-t:查看包 -f:后加处理文件,必须放在参数组合的最后一位(tar  -cf  a.tar  1.tx ...

  10. Seafile的手册

    http://manual.seafile.com/http://manual-cn.seafile.com/deploy/using_mysql.html 中文版http://manual-cn.s ...