C# 当我使用Response.Redirect()或Server.Transfer()时,我的用户会注销

C# 当我使用Response.Redirect()或Server.Transfer()时,我的用户会注销,c#,asp.net,C#,Asp.net,我正在使用#4 on进行身份验证 如果我登录,然后手动导航到我需要的页面,我不会注销。但是,如果我使用Response.Redirect()或Server.Transfer()我的用户会立即注销 这是我的密码 protected void Login1_Authenticate(object sender, System.Web.UI.WebControls.AuthenticateEventArgs e) { string userName = Login1.UserName;

我正在使用#4 on进行身份验证

如果我登录,然后手动导航到我需要的页面,我不会注销。但是,如果我使用
Response.Redirect()
Server.Transfer()
我的用户会立即注销

这是我的密码

protected void  Login1_Authenticate(object sender, System.Web.UI.WebControls.AuthenticateEventArgs e)
{
    string userName = Login1.UserName;
    string password = Login1.Password;

    bool result = UserLogin(userName, password); // This method executes SQL on my own database and returns true if the username and password work
    if ((result))
    {
        e.Authenticated = true;

        // Redirect users to some page
        Response.Redirect("/home.aspx"); // THIS CAUSES A LOGOUT
    }
    else
    {
        e.Authenticated = false;
    }
}
这里的问题是,立即取消当前页面流中所有剩余的代码,因此通常使用Authenticated标志指示用户已通过身份验证的代码永远不会执行


如果您使用的是登录控件,则可以使用该控件中的属性自动重定向到Home.aspx页面。

Hi!欢迎来到StackOverflow,请发布一些相关代码。我们无法猜测问题可能是什么。我添加了相关代码。如果删除响应,它是否正确登录。重定向代码?我看不到任何地方您实际启动会话或使用实际验证用户的形式。例如:FormsAuthentication.SetAuthCookie(用户名,持久化);?我是ASP.NET新手,e.authenticated=true;没有为我准备任何东西?如何手动设置会话?我假设我上面提到的教程涵盖了我需要的角度,如果Response.Redirect()被删除,那么也可以。一切都像一个符咒一样工作。我甚至可以手动导航到我的页面,一切正常。我甚至可以在其他页面上使用,就好像一切都正常工作一样。那么“FormsAuthentication.SetAuthCookie(userName,true);”呢?当我使用上述方法时,是否已完成此操作减去响应.Redirect()?我刚刚测试了您的解决方案,我的用户仍然会注销,除非我使用FormsAuthentication.SetAuthCookie(用户名,true)@user3108526:我刚刚看了您正在使用的教程,它明确显示您将需要使用SetAuthCookie对用户进行身份验证。我们从未使用登录控件,而是选择直接处理所有工作,因为我们有自己的用户存储。我们发现,通过这种方式,我们对程序流有了更多的控制和理解,这是有道理的。你能给我一些关于你如何直接处理自己的资料吗?@user3108526:我们用自己的用户名、密码和登录按钮创建了一个登录屏幕。登录时,我们根据数据库验证用户凭据,如果有效,我们只调用FormsAuthentication.SetAuthCookie,用户密钥作为第一个参数,false作为第二个参数。我们的web.config在身份验证块中具有以下条目:。已经有10年的时间了。