问题引出

HttpContext.Current.Cache .VS. HttpRuntime.Cache

  • HttpRuntime.Cache:获取当前应用程序的Cache
  • HttpContext.Current.Cache:为当前HTTP请求获取Cache对象,跨线程可用,在APM模式或创建了子线程的场景中不能用

HttpContext.Current.Cache 调用 HttpRuntime.Cache实现,两者指向同一 Cache对象:

  • HttpRuntime.Cache相当于是缓存具体实现类,非Web应用下也可以使用
  • HttpContext.Current.Cache是对缓存类的封装,局限HttpContext只能用于Web应用

在某些情况下,HttpContext还没被创建出来为null,就只能用 HttpRuntime.Cache。

  • 定时器的回调。
  • Cache的移除通知。
  • APM模式下异步完成回调。
  • 主动创建线程或者将任务交给线程池来执行

建议使用 HttpRuntime.Cache,既能减少出错,也减少一次函数调用。

eg:在获取程序\站点的根目录时尽量使用 System.Web.HttpRuntime.AppDomainAppPath。

其中,关于 APM模式 参见:https://www.cnblogs.com/mcgrady/p/5660314.html

HttpContext

限制:同一Http请求

Server.Transfer .VS. Response.Redirect

Server.Transfer 请求跳转页面,归属同一个http请求,URL无变化,所有操作均在服务器完成;Response.Redirect 则是重新发起新的页面请求,需要浏览器和服务器交互。

具体参见:HttpContext 初识;

HttpContext.Current 由其维护

System.Runtime.Remoting.Messaging.CallContext.HostContext as HttpContext

其中,CallContext.HostContext 表示:获取或设置与当前线程相关联的主机上下文 。

  • HttpContext.Current  并非无处不在
  • 我所知道的HttpContext.Current:推荐

APM模式下的异步完成回调,访问HttpContext.Current方法:推荐第2种方法

  • 在类型中添加一个字段来保存HttpContext的引用(异步开始前)
  • 将HttpContext赋值给BeginXXX方法的最后一个参数(object state)

HttpRuntime

使用时建议自行封装,可参见:ASP.Net HttpRuntime.Cache 使用总结;

获取或设置与当前线程相关联的主机上下文

转载于:https://www.cnblogs.com/wjcx-sqh/p/11093956.html

HttpContext HttpRuntime相关推荐

  1. HttpContext.Current.Cache vs. HttpRuntime.Cache

    .NET中Cache有两种调用方式:HttpContext.Current.Cache 和 HttpRuntime.Cache,这两种方式有什么区别呢?我们先看MSDN上的解释:       Http ...

  2. HttpContext.Current.Cache和HttpRuntime.Cache的区别,以及System.Runtime.Caching

    先看MSDN上的解释:       HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象.       HttpRuntime.Cache:获取当前应用程序的C ...

  3. 缓存通用管理类 + 缓存 HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别

    以前写asp.net时用HttpContext.Current.Cache存缓存很好用,今天写了一个windows服务程序,HttpContext.Current.Cache存缓存的时候还好,取的时候 ...

  4. MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)

    文章内容 从上章文章都知道,asp.net是运行在HttpRuntime里的,但是从CLR如何进入HttpRuntime的,可能大家都不太清晰.本章节就是通过深入分析.Net4的源码来展示其中的重要步 ...

  5. Asp.net中的Cache--HttpRuntim.Cache 和 HttpContext.Current.Cache

    在ASP.NET中有两个类都提供缓存支持, 一个是HttpRuntime类的Cache属性, 另一个是HttpContext类的Cache属性. 通过查看这两个属性的类型可以发现其实这两个属性都是Sy ...

  6. HttpContext.Current.Cache 过期时间

    HttpContext.Current.Cache 过期时间 原文:HttpContext.Current.Cache 过期时间 为了更快的读取数据,我们一般会把常用到的数据加载到Cache中 在.N ...

  7. 温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期

    IIS在接到一个新的http请求后,最终会调用asp.net_isapi.dll的ISAPI扩展(特指IIS6.0环境,iis7.0的应用程序池默认为集成方式,相对有所变化),然后传递到httpRun ...

  8. HttpContext 来源(System.Web.HttpContext.Current值为null的问题)

    转大神文档:https://www.cnblogs.com/linJie1930906722/p/5708966.html ASP.NET提供了静态属性System.Web.HttpContext.C ...

  9. 老生又长谈:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期

    IIS在接到一个新的http请求后,最终会调用asp.net_isapi.dll的ISAPI扩展(特指IIS6.0环境,iis7.0的应用程序池默认为集成方式,相对有所变化),然后传递到httpRun ...

最新文章

  1. c# groupbox大小,C# 实现可拖动和调整大小的控件
  2. Qt学习笔记之QString
  3. 20155307 实验四 Android程序设计
  4. 【SQL】表A多个字段,关联表B一个字段说明
  5. 阿里25k招.NET,要求WPF!
  6. ]数据结构:单链表之判断两个链表是否相交及求交点(带环、不带环)
  7. “摔杯一怒为俞渝” 当当创始人李国庆:蓄谋已久的阴谋 不吐不快
  8. Juniper srx系列防火墙端口限速
  9. UnityShader16:点光源和聚光灯
  10. 【C++】继承时构造函数和析构函数
  11. LED流水灯部分代码
  12. python有道批量单词音标整理-Python 批量翻译 使用有道api;
  13. 【三角】和差角公式的证明与积化和差和差化积公式的推导
  14. win10计算机如何切换用户名,如何修改电脑用户名,win10系统更改用户名方法
  15. javascript 获取汉字笔画拼音,使用笔画排序
  16. 设计模式 装饰模式(decorate)
  17. 用 Telegram bot 搭个消息提醒服务
  18. 如何给电脑安装双系统
  19. 性能测试结果分析思路
  20. 计算机无法启用媒体流,win10电脑媒体流启动不了怎么办_win10电脑媒体流无法启动解决方法-win7之家...

热门文章

  1. 02 - java 标识符命名规范
  2. 惠新宸php教程_百度PHP高级顾问惠新宸:PHP在百度的发展历程
  3. 服务器虚拟机密度,服务器整合:虚拟机密度大未必是好事
  4. 快速排序c语言实现,快速排序的C语言代码实现
  5. Linux(Ubuntu)设置系统时区
  6. 看完这篇文章,还不懂nginx,算我输
  7. git配置用户信息_git系列教程(4)-单用户配置
  8. python write 写多行_如何用 Python 执行单行命令
  9. Linux mysql.plugin_Linux下MySQL安装
  10. (DFS)棋盘问题(poj1321)