结束会话后,ASP.NET不会自动重定向到defaultURL

时间:2013-05-07 07:22:45

标签: asp.net session forms-authentication session-cookies inproc

这似乎是一个非常微不足道的问题,但我仍然无法让它运行。我正在构建一个asp.net Web应用程序,我在这里使用表单身份验证。我遵循了以下步骤。

1)在web.config中,这是条目


    <authentication mode="Forms">
          <forms loginUrl="Default.aspx" timeout="30" defaultUrl="StockTips.aspx" cookieless="UseCookies"
                 slidingExpiration="true" />
        </authentication>
        <sessionState mode="InProc" cookieless="false" timeout="30" />

2)在default.aspx中我使用了自定义身份验证,在身份验证通过后,我将重定向到web.config中提到的defaultUrl。以下是代码。这很好。

Session["test"] = "testing";
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);

Login1是asp.net的登录控件。

3)在StockTips.aspx(这是defaulturl)中,在Logout linkbutton点击事件我试图放弃会话,以便它自动重定向到loginurl(default.aspx)。这不会发生。它停留在同一页面,即StockTips.aspx。以下是代码。

        protected void lnkLogout_Click(object sender, EventArgs e)
        {
            string str = Session["test"].ToString();

            Session.Abandon();
            //Session.RemoveAll();
            //Session.Clear();
            //Response.Cookies.Remove("ASP.NET_SessionId"); 
            //Response.Cookies["ASP.NET_SessionId"].Value = string.Empty; 
            //Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 

            //FormsAuthentication.SignOut();

            string str1 = Session["test"].ToString();
        }

Session [“test”]中的值也保留。我已经尝试过上面的注释代码。我不想显式地将Response.Redirect写入loginurl,因为我很确定一旦会话被放弃它会自动重定向到loginurl。但不知怎的,它不起作用。

我不确定以下信息是否会有所帮助,但仍然考虑添加它。我有一个母版页,其中default.aspx和stocktips.aspx都打开了。 LinkBut​​ton在stocktips.aspx里面而不是在母版页上。

如果您需要我方提供更多信息,请与我们联系。

请帮忙!

提前致谢。

此致

萨马

1 个答案:

答案 0 :(得分:0)

配置

<forms name="WhateverYourAuthNameIs" 
   loginUrl="~/HomePage.aspx" 
   defaultUrl="~/Default.aspx" 
   protection="All" path="/" 
   cookieless="AutoDetect"/>

甚至尝试Js Code也

<body onload="window.setTimeout(function(){document.location.href='/Home.aspx';},30000);">

希望它能帮助你