Мой вход в ASP.NET 4 перестал работать ... почему? - PullRequest
2 голосов
/ 14 сентября 2011

Я работаю над проектом ASP.NET 4.0 C #. CreateUserWizard работает нормально, но созданные мной элементы управления входом всегда показывают это сообщение:

Your login attempt was not successful. Please try again.

Это начало происходить после того, как я изменил настройки членства и строки подключения в machine.config для эксперимента, который я позже изменил на настройки по умолчанию, т. Е .:

Вот настройки строки подключения:

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

А вот и раздел членства:

<membership>
    <providers>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>

Кроме того, я изменил базу данных по умолчанию для хранения данных своих веб-сайтов, чтобы они управляли данными по умолчанию для входа в систему, т.е. ASPNEDB.mdf, написав две строки в каждом коде позади страницы

SqlConnection con = new SqlConnection("data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true");
SqlCommand cmd = new SqlCommand();

Даже после успешного завершения CreateUserWizard1 и перенаправления на мой homepage.aspx, где я использовал стандартную метку asp.net LoginName, метка отображается пустой.

И если я вручную введу Label1 и наберу Label1.Text = HttpContext.Current.User.Identity.Name;, он все равно не будет работать.

Пожалуйста, помогите мне. Я должен показать этот проект моему колледжу, и не только это, но и моя команда потерпит неудачу из-за моего EXPERIMENT.

1 Ответ

2 голосов
/ 14 сентября 2011

Здесь есть несколько потенциальных проблем:

  1. Вы изменили машинный ключ в файле web.config.Если так, измените это назад.Если вы не можете изменить его обратно, удалите всех пользователей в вашей таблице и создайте их заново.Вы используете односторонний алгоритм хеширования, который требует, чтобы машинный ключ хэшировал введенный пароль для сравнения.

  2. Вы внесли изменения в строку подключения.Вы уверены, что в базе данных даже есть эти записи?Затем, вы случайно удалили / воссоздали базу данных?Если так, то эти пользователи ушли.См. # 1.

Более того, очевидно, что вы не вернули все, как было.

Итак, почему вы не можете войти в систему?Возможные варианты:

  1. Доступ к базе данных не тот, о котором вы думаете.
  2. Пользователь действительно не существует в базе данных, которую он просматривает.
  3. Пользователь существует, но вы предоставляете неверный пароль.
  4. Пользователь существует и пароль правильный, но машинный ключ изменился, и поэтому система не может правильно его хешировать.

В основном, вероятно, пришло время начать заново, очистив базу данных и снова добавив в нее пользователей.

...