文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ASP.NET 3.5核心编程学习笔记(28):HttpContext类

ASP.NET 3.5核心编程学习笔记(28):HttpContext类

时间:2011-04-23  来源:辛勤的代码工

  在请求执行链的各个阶段中,会有一个对象在各个对象间进行传递,这就是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,第一个参数为页面的虚拟路径,第二个参数为资源的名称。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载