Response.Redirect无法立即生效C#

时间:2013-06-13 14:49:17

标签: c# .net redirect response.redirect

我有以下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");

我的问题是如何解决它。

希望得到帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

您无法在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);