我有以下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");
我的问题是如何解决它。
希望得到帮助,谢谢!
答案 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);