在自定义的HttpHandler中为如何获取原来的Context
打算用httpHandler做一个页面跳转的例子,在初始页面BasePage中为Context添加一个名为"PageName"的item,根据这个Item的值做页面跳转.
问题: 发现在自定义的httpHandler中得到的context和BasePage的context不是同一个(无法找到在BasePage中加入的"PageName" item),请问是怎么回事?
//BasePage后台代码
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpApplication httpApp = new HttpApplication();
this.Context.Items.Add("PageName", "1");
Response.Redirect("Page1.aspx");
}
}
//自定义的IHttpHandler代码
public class Handler : IHttpHandler
{
public Handler()
{
//
// TODO: Add constructor logic here
//
}
public void ProcessRequest(HttpContext context)
{
if (context.Items["PageName"].ToString()=="1")
{
context.Response.Redirect("Page1.aspx");
}
else
{
context.Response.Redirect("Page2.aspx");
}
}
public bool IsReusable
{
get { return false; }
}
} --------------------编程问答--------------------
--------------------编程问答-------------------- 顶一下 --------------------编程问答-------------------- 帮你顶。 --------------------编程问答-------------------- 帮你顶。 --------------------编程问答-------------------- 好好看看页面生命周期的概念。 --------------------编程问答-------------------- Response.Redirect( "Page1.aspx ");
public void ProcessRequest(HttpContext context)
{
if (context.Request[ "PageName "].ToString()== "1 ")
{
context.Response.Redirect( "Page1.aspx ");
}
else
{
context.Response.Redirect( "Page2.aspx ");
}
}
Redirect了,就是两次不同的请求了, context当前不是同一个。
你可以尝试用一下Transfer或者直接Execute
补充:.NET技术 , ASP.NET