2011-08-19 301 views
1

我有一个asp.net的web应用程序,它允许用户登录和注销。当用户登录时(没问题),它说欢迎用户名,这很好。但在它旁边还是说登录。任何人都可以帮助我有一些财产,我需要设置登录?谢谢你的帮助。Asp.net登录状态不说用户登录后注销

<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false"> 
        <AnonymousTemplate> 
         [ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a> 
         ] 
        </AnonymousTemplate> 
        <LoggedInTemplate> 
         <span class="bold">Welcome</span><span class="bold"> 
          <asp:LoginName ID="HeadLoginName" runat="server" /> 
         </span>! [ 
         <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" 
          LogoutPageUrl="~/" /> 
         ] 
        </LoggedInTemplate> 
       </asp:LoginView> 

protected void LoginUser_Authenticate(object sender, AuthenticateEventArgs e) 
    { 
     SqlHelper userLogin = new SqlHelper(); 
     TextBox User = (TextBox) LoginUser.FindControl("UserName"); 
     TextBox Password = (TextBox) LoginUser.FindControl("Password"); 
     bool results = userLogin.UserLogin(User.Text, Password.Text); 
     e.Authenticated = results; 
    } 

回答

0

您有两个控件,其ID为HeadLoginStatus。这是有原因的吗?其次,你有没有尝试删除EnableViewState =“false”?

编辑

尝试更改启动页的页面在根目录下,如果它是不是已经。看看这是否有所作为。

我似乎已经找到了问题..或取决于你如何查看它的解决方案。

我的启动页面设置为子目录中的页面,而不是 根目录。我将启动页面更改为根目录中的页面( ,其中login.aspx存在),现在它按预期工作。我不认为 它应该已经这样做了。

+0

我没有碰到任何视觉工作室提供的默认设置。 – user516883

+0

你可以尝试改变我提到的两件事,看看它是否有任何区别? –

+0

试过他们两个,但什么都没有。 – user516883

-1

删除Anynymoustemplate。从来没有听说过。它不应该在那里。

<AnonymousTemplate> 
[ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a> 
] 
</AnonymousTemplate> 

编辑:抱歉,我疯了。由于某些原因,匿名模板在登录后仍然显示。

+0

这需要在那里,以便没有登录的用户可以看到它。 – user516883

+0

匿名模板:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.loginview.anonymoustemplate.aspx –

+0

这不是问题,我添加了文本来测试,看看这是否是问题,而不是。 – user516883

0

仍然不知道为什么它不验证,但我发现周围的工作,工程 当他们点击登出(我不得不在改变标志的说上登出loginstatus)做到这一点

if (Request.IsAuthenticated) 
     { 
      FormsAuthentication.SignOut(); 
      Session.Abandon(); 
      // clear authentication cookie 
      HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, ""); 
      cookie1.Expires = DateTime.Now.AddYears(-1); 
      Response.Cookies.Add(cookie1); 
      // clear session cookie (not necessary for your current problem but i would recommend you do it anyway) 
      HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", ""); 
      cookie2.Expires = DateTime.Now.AddYears(-1); 
      Response.Cookies.Add(cookie2); 

     Response.Redirect("~/"); 
     }