zoukankan      html  css  js  c++  java
  • HttpContext.Current.Cache 与 HttpRuntime.Cache有什么区别?

    HttpContext.Current.Cache 与 HttpRuntime.Cache有什么区别?

    static ManageCache()
    {
    HttpContext context = HttpContext.Current;
    if(context != null)
    {
    _cache = context.Cache;
    }
    else
    {
    _cache = HttpRuntime.Cache;
    }
    }

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

    它们指的同一个对象,在某个请求其间,Page.Cache和HttpContext.Current.Cache是有效的,至于这2者的区别,一般是由你调用的地方决定的,如果在Page里,那么用Page.Cache,如果在global.asax或自己的函数里,那么用后者

    但如果你需要在某个事件,譬如基于Timer的处理函数里访问,因为其时没有HttpContext,那么用HttpRuntime.Cache

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

    HttpContext.Current.Items和HttpContext.Current.Cache的区别是什么?

    哪里有这两个东东的具体用法吗?

    HttpContext.Current.Items is only good for the current request, HttpContext.Current.Cache is good as long as the cache is not expired

    HttpContext.Current.Items["hello"] = object;

    see how to use HttpContext.Current.Cache here:
    http://www.fawcette.com/Archives/premier/mgznarch/vbpj/2001/11nov01/an0111/an0111-1.asp

    HttpContext.Current.Items是针对当前Http请求的,即可以在一个http请求中共享数据,典型的用法是在一个aspx页中获得数据,然后保存在Context.Items中与当前http请求的页共享,象用户控件等。一个最好的例子是IBuyspy portal,你可以看看它的源码。而Cache中保存的数据可以在整修应用程序中使用。


    但是,我看见好多程序是这样处理的
    using System.Web;

    namespace LukiyA.Uoo.WebUI
    {
      public class Test
      {
        public static MapPath(HttpContext context, string url)
        {
          return context.MapPath(url);
        }
      }
    }

    HttpContext.Current表示当前HttpRequest 对应的Context对象。我的问题是:在webApplication 中,由一个页面转到 另一个页面,HttpContext.Current对象是否改变??
    我发现很多程序是把登录的user信息存储到 HttpContext.Current.User 或httpContext.Current.Items中,这样看来HttpContext.Current是在整个应用进程中不改变的,不知道理解是否正确。

    还有,把login user的信息存放在Context中和存放在session中各有什么好处,大家都放在什么地方。

    錯.
    會變得.

    如果你要整個application都不變的話,那應該使用Application來存.

    不过如果HttpContext.Current在页面跳转的时候会改变,为什么很多程序还用它来保存信息?
    我感觉是不变的

    那是為了在一個請求中共享數據.
    請看例子:

    http://jiezhi.cnblogs.com/archive/2005/01/12/90751.html

    我好像搞明白了
    httpContext.current对象只针对一个httpRequest (一个特定用户的一个特定页面),页面跳转后,该对象改变。

    但httpContext.current.user 是跟thread相关的,也就是说一个特定的用户对应一个thread,即使页面跳转,httpcontext.current.user也是不变的

    不知道对不对,请大家指正

    每次客户发出一个httpRequest,HttpRuntime对象就会创建一个HttpContext对象,所以每次都不一样的。

    谢谢大家,搞明白了
    httpContext.current.user其实要存在cookie或session中,每次AcquireRequestState的时候要写代码读出来写入httpcontext才可以

    htttpContext本身是无状态的,不能在页面间传递信息。

    >>> httpContext.current.user其实要存在cookie或session中,每次AcquireRequestState的时候要写代码读出来写入httpcontext才可以
    不在cookie或者session,直接是进程内对象。但是如果使用Forms验证,则总是通过读cookie来确定当前user。最后一个短句是对的

    >>> 但httpContext.current.user 是跟thread相关的,也就是说一个特定的用户对应一个thread,即使页面跳转,httpcontext.current.user也是不变的
    完全错误,这里和threading没有关系

    >>> 把login user的信息存放在Context/cookie 中和存放在session中各有什么好处
    session也是靠cookie实现的,而http是无状态的,so..

    倒也不是说和Threading没有任何关系,实际上System.Threading.Thread.CurrentPrincipal和System.Web.HttpContext.Current.User是同步的
    但是一个用户一个线程的观点绝对是错误的,如果你了解了http模型的话

    -------

    实际上这个类是systemframeWork处理的
    1、在sysframeWork类中添加对system.web的引用
    2、定义静态变量,如下
    public static System.Web.HttpContext   httpContext;
    3、在global.asax的Application_Start初始化httpContext
    然后在数据访问层直接引用sysframeWork.httpContext.Current等就可以了

    -----


    有这么一个语句“Search searchform = (Search)Context.Handler;”我实在不明白。

    上面这个语句很奇怪:

    1.首先在源程序中没有定义Search这个类、接口、结构、枚举、enum,在msdn中也找不到这个东西。
    2.其次Context这个东西我也不明白是什么东西,第一次看到,在msdn中虽然有介绍,但是看不太懂。

    就是上面两个问题,请各位帮忙。

    这一般是在Server.Transfer后的页面里用的

    Search应该是某个基于Page的类,如果你的东西能够运行的话,这个类应该存在的,再好好查查吧,或者用IDASM.EXE打开你的DLL看看

    Context是指HttpContext.Current,Handler是指Request对应的IHttpHandler ,在这里,应该是指当前Request的URL对应的页面

    果然,Search是一个基于Page的类,

    要在EMP.ASPX中用transfer方法,而Context.Handler的意思可以理解为当前页面AA.ASPX上一个页面的句柄..这样在source中即可以取到EMP页面中控件或者变量的值...

    页面句柄,标识上一个页面用的

  • 相关阅读:
    【C#进阶系列】06 类型和成员基础
    纪中5日T1 1564. 旅游
    纪中17日T1 2321. 方程
    纪中17日T2 2322. capacitor
    纪中10日T1 2313. 动态仙人掌
    纪中14日听课小结 图论 最短路 二分图 差分约束
    一个抓猫的游戏 消遣GAME 持续更新中!
    洛谷P1464 Function  HDU P1579 Function Run Fun
    洛谷P1976 鸡蛋饼
    纪中12日T1 2307. 选择
  • 原文地址:https://www.cnblogs.com/KUDO/p/443409.html
Copyright © 2011-2022 走看看