HttpContext & HttpRuntime
问题引出
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 表示:获取或设置与当前线程相关联的主机上下文 。
APM模式下的异步完成回调,访问HttpContext.Current方法:推荐第2种方法
- 在类型中添加一个字段来保存HttpContext的引用(异步开始前)
- 将HttpContext赋值给BeginXXX方法的最后一个参数(object state)
HttpRuntime
使用时建议自行封装,可参见:ASP.Net HttpRuntime.Cache 使用总结;
获取或设置与当前线程相关联的主机上下文
HttpContext & HttpRuntime的更多相关文章
- System.Web.NullPointerException
在.Net异步webApi中我们需要记录日志信息,需要获取客户端的ip地址,我们需要使用:HttpContext.Current.Request.ServerVariables["REMOT ...
- 缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别
先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cache. 我们再用. ...
- HttpContext.Current.Cache 和HttpRuntime.Cache的区别
先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cac ...
- HttpContext.Current.Cache 和 HttpRuntime.Cache 区别
原文地址:http://blog.csdn.net/avon520/article/details/4872704 .NET中Cache有两种调用方式:HttpContext.Current.Cach ...
- [摘]HttpContext, HttpRequest, HttpResponse, HttpRuntime, HttpServerUtility
[摘]http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html HttpRuntime HttpRuntime公开了一个静态方法 U ...
- HttpContext.Current.Cache 和 HttpRuntime.Cache
HttpRuntime.Cache:用于winfrom 和 web HttpContext.Current.Cache 用于web .NET中Cache有两种调用方式:HttpContext.Curr ...
- Cache及(HttpRuntime.Cache与HttpContext.Current.Cache)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/avon520/archive/2009/11/25/4872704.aspx .NET中Cache有两种调用方式:Ht ...
- HttpContext.Current.Cache和HttpRuntime.Cache的区别,以及System.Runtime.Caching
先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cac ...
- Asp.Net framework 类库 自带的缓存 HttpRuntime.Cache HttpContext.Cache
两个Cache 在.NET运用中经常用到缓存(Cache)对象.有HttpContext.Current.Cache以及HttpRuntime.Cache,HttpRuntime.Cache是应用程序 ...
随机推荐
- Elasticsearch技术解析与实战 PDF (内含目录)
Elasticsearch技术解析与实战 介绍: Elasticsearch是一个强[0大0]的搜索引擎,提供了近实时的索引.搜索.分 ...
- 【 Linux 】Systemd 使用说明(1)
1. 前言 在 CentOS 7 中使用 systemd 取代了 init 的启动模式,这样的更新换代有什么好处呢?首先需要对 init 和 systemd 有个概念的认识. 2. init 概述 在 ...
- python实践项目一:Collatz函数
要求1:编写一个名为 collatz()的函数,它有一个名为 number 的参数.如果参数是偶数,那么 collatz()就打印出 number // 2, 并返回该值.如果 number 是奇数, ...
- memmove和memcpy函数的区别及实现
一.memmove()和memcpy()函数和strcpy()函数的区别: (1)使用的类型不同,strcpy()函数只对字符串进行操作:memmove()和memcpy()函数对所有类型都适用,为内 ...
- win10 linux Ubuntu 18.04更换国内源
安装了win10的linux bash 版本为ubuntu 18.04 首先查询自己的linux版本信息 cat /etc/issue 然后对系统的镜像源文件进行备份,再修改镜像源文件/etc/a ...
- 多生产者多消费者(第一种方式),基于synchronized,wait,notifyAll
生产者消费者模式描述的是协调与协作关系.比如一个人正在准备食物(生产者),而另一个人正在吃(消费者),他们使用一个共用 的桌子用于放置盘子和取走盘子,生产者准备食物,如果桌子上已经满了就等待,消费者( ...
- Java基础笔试练习(二)
1. HashMap的数据结构是怎样的? A.数组 B.链表 C.数组+链表 D.二叉树 答案: C 解析: JDK8以后,HashMap的数据结构是数组+链表+红黑树 2. 在 JAVA 编程中,J ...
- 1181: 零起点学算法88——偶数求和(C语言)
一.题目: 题目来源WUSTOJ 二.源代码: #include<stdio.h> int main() { int n, m, num, sum, i, j, k; while (sca ...
- go 数据渲染到终端 01
package main import ( "fmt" "text/template" "os" ) type Person struct ...
- Android--Fragment嵌套的问题
项目中遇到Fragment嵌套应用的问题 子Fragment中要用getChildFragmentManager()方法获取FragmentManager,否则会出问题!