Reponse.Redirect не работает сразу C#

У меня есть следующий код 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 ответ

Решение

Вы не можете перенаправить в 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);
Другие вопросы по тегам