ASP.NET 3.5核心编程学习笔记(28):HttpContext类
2011-04-23 22:29
806 查看
在请求执行链的各个阶段中,会有一个对象在各个对象间进行传递,这就是HttpContext对象。HttpContext封装了ASP.NET要处理的单个HTTP请求的所有信息。在请求处理机制建立时,HttpContext类由HttpRuntime对象实例化。接着,该对象会经历请求生存期的各个阶段。如下图所示:
HttpContext类的属性
下表列出了HttpContext类的所有属性。
Current属性是一个十分常用的静态成员,返回当前被处理请求的HttpContext对象。
Items属性是一个字典对象(更准备地说,它是一个哈希表),使数据可以在某个请求所涉及的模块和处理程序间共享。这些数据的生存期仅限于请求的执行期间。
HttpContext类的方法
从ASP.NET 2.0开始,GetSection方法取代了GetConfig方法,GetWebApplicationSection方法取代了GetAppConfig方法。
URL重写
RewritePath方法使我们能在运行时更改当前请求的URL,从而执行某种内部的重定向。这样,显示的页面便是通过RewritePath设置的,但显示在浏览器地址栏的地址仍保持不变。URL的更改发生在服务器端,更重要的是在同一次调用的上下文中。RewritePath主要在global.asax中使用,并且应谨慎使用。如果在回发事件上下文中使用该方法,可能会遇到某些视图状态方面的问题。
以上代码将某个URL重写为确切页面的地址。
以编程方式加载资源
如果需要以编程方式生成嵌入资源表达式中的文本,该怎么做?Page和HttpContext类分别提供了一对用于检索嵌在应用程序中资源的方法。
GetGlobalResourceObject用于检索全局资源,其定义在.resx文件中,且位于特殊文件夹App_GlobalResource下。GetLocalResourceObject针对的也是.resx文件,但位于指定页面的特殊文件夹App_LocalResources下。
传入GetGlobalResourceObject的第一个参数指定.resx资源文件的名称(不带扩展名),第二个参数是要检索资源的名称。而对于GetLocalResourceObject,第一个参数为页面的虚拟路径,第二个参数为资源的名称。
HttpContext类的属性
下表列出了HttpContext类的所有属性。
Current属性是一个十分常用的静态成员,返回当前被处理请求的HttpContext对象。
Items属性是一个字典对象(更准备地说,它是一个哈希表),使数据可以在某个请求所涉及的模块和处理程序间共享。这些数据的生存期仅限于请求的执行期间。
HttpContext类的方法
从ASP.NET 2.0开始,GetSection方法取代了GetConfig方法,GetWebApplicationSection方法取代了GetAppConfig方法。
URL重写
RewritePath方法使我们能在运行时更改当前请求的URL,从而执行某种内部的重定向。这样,显示的页面便是通过RewritePath设置的,但显示在浏览器地址栏的地址仍保持不变。URL的更改发生在服务器端,更重要的是在同一次调用的上下文中。RewritePath主要在global.asax中使用,并且应谨慎使用。如果在回发事件上下文中使用该方法,可能会遇到某些视图状态方面的问题。
protected void Application_BeginRequest(object sender, EventArgs e) { HttpContext context = HttpContext.Current; object o = context.Request["id"]; if(o != null) { int id = (int)o; string url = GetPageUrlFromId(id); context.RewritePath(url); } } protected string GetPageUrlFromId(int id) { ... }
以上代码将某个URL重写为确切页面的地址。
以编程方式加载资源
如果需要以编程方式生成嵌入资源表达式中的文本,该怎么做?Page和HttpContext类分别提供了一对用于检索嵌在应用程序中资源的方法。
GetGlobalResourceObject用于检索全局资源,其定义在.resx文件中,且位于特殊文件夹App_GlobalResource下。GetLocalResourceObject针对的也是.resx文件,但位于指定页面的特殊文件夹App_LocalResources下。
msg1.Text = (string)HttpContext.GetGlobalResourceObject("Test", "MyString"); msg2.Text = (string)HttpContext.GetLocalResourceObject("/Core35/Samples/Ch02/ResPage.aspx", "PageResource1.Title");
传入GetGlobalResourceObject的第一个参数指定.resx资源文件的名称(不带扩展名),第二个参数是要检索资源的名称。而对于GetLocalResourceObject,第一个参数为页面的虚拟路径,第二个参数为资源的名称。
相关文章推荐
- ASP.NET 3.5核心编程学习笔记(46):HTTP模块的编写
- ASP.NET 3.5核心编程学习笔记(32):HttpApplicationState
- ASP.NET 3.5核心编程学习笔记(30):HttpResponse对象
- ASP.NET 3.5核心编程学习笔记(26):HttpApplication对象
- ASP.NET 3.5核心编程学习笔记(31):HttpRequest对象
- ASP.NET 3.5核心编程学习笔记(42):HTTP处理程序的编写之建立数据报表
- ASP.NET 3.5核心编程学习笔记(41):HTTP处理程序与HTTP模块
- ASP.NET 3.5核心编程学习笔记(45):HTTP处理程序之高级编程
- ASP.NET 3.5核心编程学习笔记(44):HTTP处理程序的编写之从数据库加载图像
- ASP.NET 3.5核心编程学习笔记(43):HTTP处理程序的编写之图片查看器
- ASP.NET 3.5核心编程学习笔记(37):缓存的使用
- ASP.NET 3.5核心编程学习笔记(47):ASP.NET的安全性之安全性上下文与信任级别
- ASP.NET 3.5核心编程学习笔记(58):利用页面方法来进行远程调用
- ASP.NET 3.5核心编程学习笔记(5):HTML控件
- ASP.NET 3.5核心编程学习笔记(1):ASP.Net页面请求处理流程
- ASP.NET 3.5核心编程学习笔记(6):Web控件
- ASP.NET 3.5核心编程学习笔记(11):SqlConnection、连接池
- ASP.NET 3.5核心编程学习笔记(16):DataTable、DataView
- ASP.NET 3.5核心编程学习笔记(21):LINQ查询语法
- ASP.NET 3.5核心编程学习笔记(38):自定义缓存依赖