HttpContext.Current.Response与Page.Response应该是同一个HttpResponse的对象,它负责将 HTTP 响应数据发送到客户端。他们的作用都是一样的,但是在Page_UnLoad中却要写成HttpContext.Current.Response,这是什么原因呢?
解决方案 »
- iis7在内网发布网站 flv视频无法显示和播放
- 请教vs2008 Web 应用中查询ACCESS数据库照成全站Cahce缓存和所有静态变量全部清空的bug如何解决?
- SQL2005 and Vs2005 问题
- 百思不得其解!有关Gridview导出为EXCEL文件时出现乱码?
- 数组变量跨页面传递的问题?
- ajax怎么实现象http://demo.script.aculo.us/shop的拖放功能
- 查询数据
- 请问如何在外部引用控件方法 如:dropdownlist.onselectedindexchanged="onselecchange"
- 子窗口如何让父窗口执行某一事件
- 求救:web user control的问题
- 如何设置TreeView父节点节点上的CheckBox的背景色
- 数据类型 text 和 varchar 在 equal to 运算符中不兼容。
Page.Response:当前页面的Response对象。如果请求的是同一个页面,它们是一样的。HttpContext.Current.Response能获取到网站当前任何页面正在相应的请求的Response对象,而Page.Response只是当前页面。比较拗口。
page.response只能在当前页使用
而httpcontext.current.response可在任何地方使用
而Page_UnLoad里确要HttpContext.Current.Respone.WritePage_Load和Page_Unload都是同一个页面对象的事件,to:zhoufoxcn
“Page.Response:当前页面的Response对象。 ” 根据页面的生命周期:
protected void Page_PreInit(object sender, EventArgs e)
{
Response.Write("Page_PreInit...<br/>");
} protected void Page_Init(object sender, EventArgs e)
{
Response.Write("Page_Init...<br/>");
}
protected void Page_InitComplete(object sender, EventArgs e)
{
Response.Write("Page_InitComplete...<br/>");
} protected void Page_PreLoad(object sender, EventArgs e)
{
Response.Write("Page_PreLoad...<br/>");
} protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Page_Load...<br/>");
} protected void Page_LoadComplete(object sender, EventArgs e)
{
Response.Write("Page_LoadComplete...<br/>");
}
protected void Page_PreRender(object sender, EventArgs e)
{
Response.Write("Page_PreRender...<br/>");
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
Response.Write("Page_PreRenderComplete...<br/>");
}
protected void Page_SaveStateComplete(object sender, EventArgs e)
{
Response.Write("Page_SaveStateComplete...<br/>");
}
protected void Page_Unload(object sender, EventArgs e)
{
//Response.Write("Page_Unload...<br/>");
HttpContext.Current.Response.Write("Page_Unload...<br/>");
}
protected void Page_Disposed(object sender, EventArgs e)
{
} 只有在Disposed以后,页面才被销毁。那么在Page_Unload的时候,Page对象还是在的,那为什么就不能Page.Response.Write...了呢?
是当前进程当前线程,不要误导别人以为同一时间IIS只能处理一个请求。两个Page完全可以同时在两个线程中独立进行,甚至在两个进程中独立进行,这都不重要。所有HttpContext.Current,就是当前线程的Http上下文。
在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。Response.Write()默认是page的.HttpContext.Current.Response是当前线程上下文件的response对象
Page_Unload阶段 页及其控件已被呈现,因此无法对响应流做进一步更改response默认是page的.
HttpContext.Current.Response是当前线程上下文的.