• 内置对象Cache对象


    Cache对象

    对于每个应用程序域均创建该类的一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效。有关此类实例的信息通过HttpContext对象的Cache属性或Page对象的Cache属性来提供。

    1.Cache对象的属性

    Cache对象的属性如表14-13所示:

    表14-13   Cache对象的属性

        

        

    Count

    获取存储在缓存中的项数。当监视应用程序性能或使用ASP.NET跟踪功能时,此属性可能非常有用

    存储在缓存中的项数

    Item

    获取或设置指定键处的缓存项

    表示缓存项的键的String对象

    2.Cache对象的方法

    Cache对象的方法如表14-14所示:

    表14-14   Cache对象的属性

        

        

    Add

    将指定项添加到 Cache 对象,该对象具有依赖项、过期和优先级策略,以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)

    Get

    Cache 对象检索指定项

    Remove

    从应用程序的 Cache 对象移除指定项

    Insert

    Cache对象插入项。使用此方法的某一版本改写具有相同key参数的现有Cache

    实例14-19:检索为ASP.NET文本框服务器控件缓存的值

    Get方法可以从Cache对象检索指定项,其唯一的参数key表示要检索的缓存项的标识符。该方法返回检索到的缓存项,未找到该键时为空引用。

    下面的示例展示如何检索为ASP.NET文本框服务器控件缓存的值。

    Cache.Get("MyTextBox.Value");

    实例14-20:移除Cache对象

    Remove方法可以从应用程序的Cache对象移除指定项,其唯一的参数key表示要移除的缓存项的String标识符。该方法返回从Cache移除的项。如果未找到键参数中的值,则返回空引用。

    下面的示例创建一个RemoveItemFromCache函数。调用此函数时,它使用Item属性检查缓存中是否包含与Key1键值相关的对象。如果包含,则调用Remove方法来移除该对象。

    public void RemoveItemFromCache(Object sender, EventArgs e)

    {

         if(Cache["Key1"] != null)

           Cache.Remove("Key1");

    }

    Global.asax

    除了编写界面代码外,开发人员还可以将逻辑和事件处理代码添加到他们的Web应用程序中。此代码不处理界面的生成,并且一般不为响应个别页请求而被调用。相反,它负责处理更高级别的应用程序事件,如Application_Start,Application_End,Session_Start,Session_End等。开发人员使用位于特定Web应用程序虚拟目录树根处的Global.asax文件来创作此逻辑。第一次激活或请求应用程序命名空间内的任何资源或URL时,ASP.NET自动分析该文件并将其编译成动态.NET框架类(此类扩展了HttpApplication基类)。

    第一次激活或请求应用程序命名空间内的任何资源URL时,ASP.NET分析Global.asax文件并将其动态编译成.NET框架类。Global.asax文件被配置为自动拒绝任何直接URL请求,从而使外部用户不能下载或查看内部代码。

    通过在Global.asax文件中创作符合命名模式“Application_EventName(Appropriate EventArgumentSignature)”的方法,开发人员可以为HttpApplication基类的事件定义处理程序。例如:

    <script language="C#" runat="server">

    void Application_Start(object sender, EventArgs e) {

       // Application startup code goes here

    }

    </script>

    如果事件处理代码需要导入附加的命名空间,可以在.aspx页中使用@ import指令,如下所示:

    <%@ Import Namespace="System.Text" %>

    第一次打开页时,引发应用程序和会话的Start事件:

    void Application_Start(object sender, EventArgs e) {

       // Application startup code goes here

    }

    void Session_Start(object sender, EventArgs e) {

       Response.Write("Session is Starting...<br>");

       Session.Timeout = 1;

    }

    对每个请求都引起BeginRequest和EndRequest事件。刷新页时,只显示来自Begin-Request,EndRequest和Page_Load方法的消息。

    静态对象、.NET框架类和COM组件都可以使用对象标记在Global.asax文件中定义。范围可以是appinstance,session或application。appinstance范围表示对象特定于Http-Application的一个实例并且不共享。

    <object id="id" runat="server" class=".NET Framework class Name" scope=" appinstance"/>

    <object id="id" runat="server" progid="COM ProgID" scope="session"/>

    <object id="id" runat="server" classid="COM ClassID" scope="application"/>

    请注意,Global.asax使用了微软的HTML拓展<SCRIPT>标记语法来限制脚本,这也就是说,必须用<SCRIPT>标记来引用这两个事件而不能用<%和%>符号引用。在Global.asax中不能有任何输出语句,无论HTM的语法还是Response.Write方法都是不行的,Global.asax是任何情况下也不能进行显示的。

  • 相关阅读:
    析构函数中的virtual是否必要?
    程序员必看的书
    UML类图几种关系的总结
    VS 2008的64位编译环境的安装和使用
    VB获取CAD属性值
    30分钟LINQ教程
    ADO.NET
    C#编写Windows服务程序图文教程
    Json的序列化与反序列化以及乱入的k_BackingField
    C#中的委托(Delegate)和事件(Event)
  • 原文地址:https://www.cnblogs.com/huashanlin/p/836525.html
Copyright © 2020-2023  润新知