小编jwe*_*kes的帖子

Response.Redirect(URL,false) - 重定向后事件管理

可能重复:
Response.Redirect导致System.Threading.ThreadAbortException

ASP/C#.NET(Web表单,而不是MVC)

更新:刚发现一个相关的帖子(可能会重复这个帖子):为什么Response.Redirect导致System.Threading.ThreadAbortException?

~~~

经过一番研究后,我逐渐认识到,一般来说,在使用Response.Redirect()时,最好为第二个参数传递FALSE,以避免System.Threading.ThreadAbortException.(http://blogs.msdn.com/b/tmarq/archive/2009/06/25/correct-use-of-system-web-httpresponse-redirect.aspx)

我的问题是,"是否有一种推荐的方式(模式)用于管理(即跳过)重定向后触发的页面事件中的处理,当为第二个参数传递false时?"

当我在Page_Load()中检查并重定向过期的会话时,这对我来说主要是一个问题.每次重定向然后在每个事件的顶部检查该标志时,可能必须设置"_Rreirected"标志似乎非常繁琐.我过去不必担心这个问题因为我总是为第二个参数传递TRUE,不知道更好.

下面是一些代码,显示了我不想要做的事情(在处理每个事件之前检查_Redirected).也许我正在寻找的是更好的会话到期处理模式.

任何有关如何改进此处理的建议都将不胜感激.

private bool _Redirected = false;    

protected void Page_Load(object sender, EventArgs e)
{
  if (Session["key"] == null)
  {
    Response.Redirect("SessionExpired.aspx", false);
    Context.ApplicationInstance.CompleteRequest();

    _Redirected = true;
  }       
}

protected void Page_PreRender(object sender, EventArgs e)
{
  if (!_Redirected)
  {
    // do Page_PreRender() stuff...
  }
}

protected void Button1_Click(object sender, EventArgs e)
{
  if (!_Redirected)
  {
    // do Button1_Click() stuff...

    Response.Redirect("Button1Page.aspx", false);
    Context.ApplicationInstance.CompleteRequest();

    _Redirected = true;
  }
}

protected void Button2_Click(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net session response.redirect

6
推荐指数
1
解决办法
9921
查看次数

标签 统计

asp.net ×1

c# ×1

response.redirect ×1

session ×1