0

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

我的问题是我该如何解决它。

希望得到帮助,谢谢!

4

1 回答 1

2

您不能在 a 中重定向,Try-Catch因为 aThreadAbortedException 被抛出。你需要传递falseResponse.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);
于 2013-06-13T14:58:49.267 回答