zoukankan      html  css  js  c++  java
  • Why cache can't direct use in class files

    I see several reference to using the ASP.NET 2.0 Cache object in C# where
    the documentation just shows snippets like this:
    if (Cache["sometoken"] == null)
    ... do something

    However when I use this code in a C# class that is called from an ASP.NET
    page, the compiler gives this error:
    'Cache' is a tpe and cannot be used as an expression

    Furthermore when I type in Cache and press the "." for intellisense, the
    only things that pop up are Equals, NoAbsoluteExpiration,
    NoSliderExpiration, ReferenceEquals. No methods like Add, Insert and so
    forth show up.

    This drove me crazy for a while. Then I decided to try my cache code
    directly in my ASP.NET code behind page and it worked just fine.

    Eventually after mucking around for a while I found that if I did this in my
    C# class file then things worked correctly:

    public Cache MyCache;
    MyCache = System.Web.HttpContext.Current.Cache;

    and now I can use if (MyCache["sometoken'] == null) from my C# class and it
    works just fine.

    A couple of questions:

    1) Is this really necessary or am I referencing or doing something in
    correctly?

    2) Is there another approach to accessing the Cache from a C# class called
    by a ASP.NET code behind, or did I stumble upon the right approach by what I
    am using here?

    Hopefully I'll get some clarification as to what is/was going on and why
    this was necessary, and hopefully someone will find this post one day and it
    will save them a lot of time.

    Thanks,

    Steve


    ------------------------------------------------------------------------------

    Steve,

    That's what you had to do. The Cache object is used by the .aspx page
    natively and therefore the object has already been instantiated. In a class
    file the Cache object is not already being used so you had to explicitly
    create a holder for it and then get the cache object being used on the page.

    Short story, you're doing it exactly right.

    --
    Sincerely,

    S. Justin Gengo, MCP
    Web Developer / Programmer


    be sure System.Web.dll is references by project your class is in, and to get
    the current Cache object being used by the asp.net, call
    System.Web.HttpContect.Current.Cache
  • 相关阅读:
    项目笔记:导出Excel功能设置导出数据样式
    前后台JSON传值得一个问题和异常处理net.sf.json.JSONException: Unquotted string '"name"'
    ES6中的async函数
    zoj 1203 Swordfish
    C#:excel导入导出
    "undefined reference to strptime"之自己定义strptime函数
    OpenGL蓝宝书第七章:立体天空和纹理折射、双纹理(下)
    HDOJ 5384 Danganronpa AC自己主动机
    Hibernate复习之Hibernate基本介绍
    Java集合---ConcurrentHashMap原理分析
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/846659.html
Copyright © 2011-2022 走看看