任何web应用程序一样,也能够访问application对象。
在asp.net中,application对象可视为高级语言中的全局变量。它在应用程序中保持一致,以实现 ASP.NET 应用程序中多个会话和请求之间的全局信息共享。(有必要提一下,ASP.NET 应用程序是单个 Web 服务器上的某个虚拟目录及其子目录范围内的所有文件、页、处理程序、模块和代码的总和。)
有别于普通全局变量的是,asp.net应用程序状态Application对象在客户端第一次从某个特定的 ASP.NET 应用程序虚拟目录中请求任何 URL 资源时创建。Web 服务器上的每个 ASP.NET 应用程序都要创建一个单独的实例。然后通过此Application对象公开对每个实例的引用。
这样,application对象适宜被用来保存需要不同用户共享的数据,记载关于应用程序的设置情况,以使其能够被运行于同一个web应用程序中的所有代码访问,进一步,将包含application对象的方法外置为web服务,以在应用程序中共享对象并操作应用程序设置值。有关应用程序访问次数的状态编程,读取远程数据库的互操作编程等都通过以此类似的方式来实现应用程序的设置共享。
下面的代码使用application对象,记载特定应用程序的访问次数,并将方法外置为web服务供应用程序调用:
[WebService(Namespace="http://www.thjx.com")]
public class Application : System.Web.Services.WebService
{
/// <summary>
/// 返回应用程序被访问次数
/// </summary>
[WebMethod(Description="返回特定应用程序被访问的次数")]
public int GetAppAccessCount(string key)
{
if(Application[key]==null)
{
Application.Lock();//锁定Application对象以同步访问
Application[key]=1;
Application.UnLock();//取消锁定
}
else
{
Application.Lock();
Application[key]=Int32.Parse(Application[key].ToString())+1;
Application.UnLock();
}
return (int)Application[key];
}
}
方法GetAppAccessCount(string key)在特定应用程序被执行一次后访问次数递增1个单位量,并保存在应用程序设置变量中,下一次来自任何用户的访问将在这个变量的基础上递增该设置。
五、使用Web.congfig文件存储应用程序设置
从上面可以知道,asp.net应用程序需要配置很多的特殊设置,包括为所有页面设置超时、定制出错页面来代替默认IIS出错页面以及安全设置和授权级别设置等。看上去,这么多类型的设置一定很麻烦,幸运地是,asp.net结束了需要进行手工配置的历史,那就是将设置保存在Web.config文件中。这是不同于此前提到的使用注册表或application对象保存应用程序设置的另一种保存应用程序设置的方法。由于web.config文件存在于应用程序根目录下,以这种方式保存的应用程序设置将使应用程序跨平台使用和伸缩性大大增强。
使用web.config文件存储应用程序设置有很多优点,web.config实际上是一个纯文本文件,显然,存储在纯文本文件中的配置信息非常容易修改,而且,不象传统的asp,任何对配置设置的修改不需要重新启动web服务器,就可以立即应用于当前的web应用程序;同时,设置好的配置被自动应用于当前文件夹和它所有的子文件夹,使真正兼容主机的xcopy成为可能,我们只需要复制另一个IIS虚拟目录中的所有web应用程序文件即可实现应用程序部署;另外,一些特定任务的配置如基于表单的授权只有通过使用web.config文件才能实现。
这里,有必要简要说说web.config文件的构造。web.config文件是标准的xml文件,遵循格式正确的xml文档的所有规范