表单身份验证很快就会注销,本地工作正常!

时间:2010-04-25 10:31:51

标签: asp.net forms-authentication session-state web-config session-timeout

有一个问题,我正面对我的托管公司,我使用一个使用FormsAuthentication的项目,问题是,虽然它成功登录,但它非常快速地退出,我不知道可能是什么原因那个, 所以在我的web.config文件中我添加了这些行:

<authentication mode="Forms" >
  <forms name="Nadim" loginUrl="Login.aspx" defaultUrl="Default.aspx" protection="All" path="/" requireSSL="false"/>
</authentication>
<authorization>
  <deny users ="?" />
</authorization>


<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"  cookieless="false"  timeout="1440">
</sessionState>

这是我在自定义登录页面中使用的代码:

protected void PasswordCustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
        try
        {
            UsersSqlDataSource.SelectParameters.Clear();
            UsersSqlDataSource.SelectCommand = "Select * From Admins Where AdminID='" + IDTextBox.Text + "' and Password='" + PassTextBox.Text + "'";
            UsersSqlDataSource.SelectCommandType = SqlDataSourceCommandType.Text;

            UsersSqlDataSource.DataSourceMode = SqlDataSourceMode.DataReader;

            reader = (SqlDataReader)UsersSqlDataSource.Select(DataSourceSelectArguments.Empty);
            if (reader.HasRows)
            {
                reader.Read();
                if (RememberCheckBox.Checked == true)
                    Page.Response.Cookies["Admin"].Expires = DateTime.Now.AddDays(5);
                args.IsValid = true;

                string userData = "ApplicationSpecific data for this user.";

                FormsAuthenticationTicket ticket1 = new FormsAuthenticationTicket(1, IDTextBox.Text, System.DateTime.Now, System.DateTime.Now.AddMinutes(30), true, userData, FormsAuthentication.FormsCookiePath);
                string encTicket = FormsAuthentication.Encrypt(ticket1);
                Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
                Response.Redirect(FormsAuthentication.GetRedirectUrl(IDTextBox.Text, RememberCheckBox.Checked));

                //FormsAuthentication.RedirectFromLoginPage(IDTextBox.Text, RememberCheckBox.Checked);
            }
            else
                args.IsValid = false;

        }
        catch (SqlException ex)
        {
            ErrorLabel.Text = ex.Message;
        }
        catch (InvalidOperationException)
        {
            args.IsValid = false;
        }
        catch (Exception ex)
        {
            ErrorLabel.Text = ex.Message;
        }

你也会发现这行代码: FormsAuthentication.RedirectFromLoginPage(IDTextBox.Text,RememberCheckBox.Checked); 是评论,因为我认为当我登录时票证可能有问题,所以我手动创建它,我所知道的每件事我尝试过但没有任何效果, 那么有谁知道这是什么问题? 提前致谢, Baher。

2 个答案:

答案 0 :(得分:0)

您正在修改不需要修改的内容。

删除Response.Redirect(FormsAuthentication行,取消注释重定向,然后尝试用

替换列出的配置
<authentication mode="Forms" />
<authorization>
  <deny users ="?" />
</authorization>
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"  cookieless="false"  timeout="1440"/>

答案 1 :(得分:-1)

我认为您的问题可能在stateConnectionString =“tcpip = localhost:42424”中,您可能需要为您的提供商设置不同的网址。