我在Session.Abandon
之後面臨一個特殊的重定向問題,這裏是代碼片段刪除會話或session.abandon後,重定向請求未完成
if (Session["Login"] != null)
{
login = (LoginState)Session["Login"];
if (!RoleValidation.ManagerRoleValidate(login.role_id))
{
Session.Remove("Login");
Session.RemoveAll();
Session.Abandon();
Response.Redirect("~/Login.aspx");
}
}
這裏如果條件爲真需要很長時間才能重定向...實際上它根本沒有重定向到頁面它似乎被卡在了某個地方...已將此部分放入try catch塊,它表示爲
Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack
我不確定是什麼導致它。它發生的原因是什麼?
完整的代碼片段是:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Login"] != null)
{
login = (LoginState)Session["Login"];
if (!RoleValidation.ManagerRoleValidate(login.role_id))
{
Session.Remove("Login");
Session.RemoveAll();
Session.Abandon();
Response.Redirect("~/Login.aspx", false);
}
}
else
{
Response.Redirect("~/Login.aspx");
}
}
public static Boolean ManagerRoleValidate(String Role_id)
{
if (Role_id.Equals("1") || Role_id.Equals("2") || Role_id.Equals("4") || Role_id.Equals("999"))
{
return true;
}
else
{
return false;
}
}
並且Login.aspx中沒有重定向,因此它可以反覆重定向。
此代碼是否在母版頁中? Login.aspx是一個主內容頁面嗎? – Sreekumar 2011-05-27 05:01:51
@Sreekumar沒有它在母版頁它的兒童頁面 – Joy 2011-05-27 05:12:07