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);