【问题标题】:Reponse.Redirect doesn't work immediately C#Reponse.Redirect 不能立即工作 C#
【发布时间】:2013-06-13 14:49:16
【问题描述】:

我有以下 C# 代码:

string ProfileID, UserID;
try
{
    ProfileID = Request.QueryString["ProfileID"].ToString();
    string SelectQuery;
    DataSet ds;
    try
    {
        UserID = Session["UserID"].ToString();
        if (ProfileID == UserID)
        {
            Response.Redirect("user/Default.aspx", true);
            return;
        }
        else
        {
           //some code here
        }
    }
    finally
    {

      //some code here

    }
}
catch {
    Response.Redirect("DoesNotExists.aspx");
}

这里的问题是,如果条件为真(if (ProfileID == UserID)),代码继续运行,而不是在这一行重定向:Response.Redirect("user/Default.aspx", true); redicet 在这一行:Response.Redirect("DoesNotExists.aspx");

我的问题是如何解决它。

希望得到帮助,谢谢!

【问题讨论】:

  • 你能捕捉到实际的异常吗? catch (Exception ex) 会捕获所有异常并告诉你出了什么问题。
  • 谢谢,还有其他解决办法吗?

标签: c# .net redirect response.redirect


【解决方案1】:

您不能在 Try-Catch 中重定向,因为会抛出 ThreadAbortedException。您需要将false 传递给Response.Redirect 才能这样做。

Boolean 表示是否执行 当前页面应该终止。

所以要么保存重定向位置并在 try-catch 之后重定向,要么使用Response.Redirect(url, false)

string ProfileID, UserID, redirectUrl;
try
{
    ProfileID = Request.QueryString["ProfileID"].ToString();
    string SelectQuery;
    DataSet ds;
    try
    {
        UserID = Session["UserID"].ToString();
        if (ProfileID == UserID)
        {
            redirectUrl = "user/Default.aspx";
        }
        else
        {
           //some code here
        }
    }
    finally
    {

      //some code here
    }
}
catch 
{
    redirectUrl = "DoesNotExists.aspx";
}

if(!string.IsNullOrEmpty(redirectUrl))
    Response.Redirect(redirectUrl);

【讨论】:

  • 刚刚在我的手机上发现了这个问题,然后在我的笔记本电脑上启动了 SO 来发布这个。
  • 谢谢,但是现在,当代码处于捕获状态时 (Response.Redirect("DoesNotExists.aspx");) 我收到以下错误消息:“发送 HTTP 标头后无法重定向。 “,为什么?
  • @NaveTseva:你在//some code here做什么?看来您正在写信给 HttpResponse。你不应该正常使用Response.Write
  • 我没有在代码的任何其他地方使用任何其他respone.somthing
  • @NaveTseva:你使用了什么方法?如果您使用false-redirect 方法,则不得再次调用Response.Redirect。否则你会得到这个异常。
猜你喜欢
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多