App_Code中的类如何访问Cache?

来源:互联网 发布:百度网盘网络错误 编辑:程序博客网 时间:2024/05/22 02:12

App_Code中的类如何访问Cache?

一位学生来邮件问以下问题:

金老师:
    您好,我在学习中遇到一个奇怪的问题。自己这么也想不明白。身边也没有人可以请教。
只好麻烦您了,希望得到解答。

在.aspx.cs中存在一个Cache对象,我在.aspx.cs中使用Cache.Insert("key",object)方法装
载一个解析后的xml对象放入Cache中,这样做一切正常。
可是后来我想在单独在App_Code文件夹里单独建一个.cs文件做同样的事情,却发现在这里不
能直接调用Cache对象对象了,
于是我using System.Web.Caching后自己定义了一个Cache对象,然后用这个对象来Insert;

mychche = new Cache();
if (mychche["xmlen"] == null)//在这里报NullReferenceException
{}
真的这么也搞不明白这里为什么会NullReferenceException,mychche明明已经初始化了,myc
hche["xmlen"]我在前面也已经Insert(key,object)了,
希望得到您的帮助
谢谢了

============================

回答:

你这样用,在App_code中:
public class MyUseCache
{
 public MyUseCache()
 {
  //
  //TODO: 在此处添加构造函数逻辑
  //
 }

    public void InsertCache(HttpContext context)
    {
        context.Cache.Insert("cacheKey", "hello2");
    }
}

在ASP.NET网页中:

public partial class UseCache : System.Web.UI.Page
{
    private MyUseCache obj = new MyUseCache();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            obj.InsertCache(Context);
            Response.Write("Data is Added to Cache");
        }
        else
            Response.Write(Cache["cacheKey"]);
    }
}
你问题的关键在于:
App_Code中的类是全局类型,所有页面都可以创建它的实例,而每个页面都生存于特定HTTP请求上下文中。
因此,通过将特定的上下文对象传送给它,就能访问到Cached对象。

 

原创粉丝点击