App_Code中的类如何访问Cache?
2008-05-19 11:01
141 查看
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对象。
一位学生来邮件问以下问题:
金老师:
您好,我在学习中遇到一个奇怪的问题。自己这么也想不明白。身边也没有人可以请教。
只好麻烦您了,希望得到解答。
在.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对象。
相关文章推荐
- 如何创建一个ContentProvider,提供给其他App访问
- 项目里如何访问AppDelegate
- 已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张,现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令。(提示:可以
- 没有App_Code,如何使用ASP.NET控件?
- 如何更改Web Service部署生成的App_Code.dll的名称
- 开发ASP.NET 2.0 Web应用程序时如何将App_Code文件夹中的共享代码配置生成多个Dll
- 如何查看App provision profile文件中的钥匙链访问组名称
- Adroid:如何在app中访问到在market当中的其它apps
- 没有App_Code,如何使用ASP.NET控件?
- 如何查看App provision profile文件中的钥匙链访问组名称
- android5.0,6.0第三方签名APP,在SElinux下,如何获得对一个内核节点的访问权限?
- WEBAPI项目的Controller类中无法访问App_Code里的类的解决方法
- 开发ASP.NET 2.0 Web应用程序时如何将App_Code文件夹中的共享代码配置生成多个Dll
- VS2013 App_Code中的类访问不到 VS2013类不能访问
- 没有App_Code,如何使用ASP.NET控件?
- 如何更改Web Service部署生成的App_Code.dll的名称
- 如何解决 App 发布的 Invalid Code Signing Entitlements 问题
- VS2010如何在一个web项目中使用APP_CODE下的自定义类
- ASP.NET --WEB应用程序 App_Code中新的类无法访问的问题解决方法
- 如何在Web App Project 或者 Web Site Project的App_Code 内使用 Profile/ProfileCommon