您的位置:首页 > 理论基础 > 计算机网络

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中使用,并且应谨慎使用。如果在回发事件上下文中使用该方法,可能会遇到某些视图状态方面的问题。

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,第一个参数为页面的虚拟路径,第二个参数为资源的名称。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: