Я недавно унаследовал проект ASP.NET от другого программиста, который требовал объединения двух баз данных. После их объединения и исправления возникающих проблем в коде я удалил таблицы членства в aspnet, а затем заново создал их с помощью мастера aspnet_regsql. Я создал несколько пользователей и ролей, и в моем приложении можно было просто войти, используя стандартный элемент управления входом asp.net. Затем я вышел из системы и попытался войти снова, но это не сработало.
В попытке точно определить проблему я установил точки останова на события LoggingIn, Authenticate и LoggedIn, и почему-то ни одно из этих событий не запускается. Страница будет подтверждена, но если вы введете правильные учетные данные, она, вероятно, просто отправит сообщение обратно, не запустив ни одно из событий входа в систему.
В конце концов я расстроился и занялся чем-то другим. Затем сегодня (на следующий день) я вошел и проверил снова, и каким-то образом это позволило мне войти в первый раз. Я попытался выйти и снова войти в систему, и у меня возникла точно такая же проблема. Проверка, но без проверки подлинности.
Вот код для контроля входа в систему:
<asp:Login ID="Login1" runat="server" UserNameLabelText="Username:" PasswordLabelText="Password:" OnLoggedIn="Login1_LoggedIn"></asp:Login>
Код входа Login1_LoggedIn:
protected void Login1_LoggedIn(object sender, EventArgs e)
{
if (Roles.IsUserInRole(Login1.UserName,"Administrator"))
Response.Redirect("~/Admin/Default.aspx");
else if (Roles.IsUserInRole(Login1.UserName,"Appointment Administrator"))
Response.Redirect("~/ApptReq/Management/ManageEntities.aspx");
}
Разделы членства в Web.config:
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="60" cookieless="UseCookies" name="Test" slidingExpiration="true" path="/"></forms>
</authentication>
<roleManager enabled="true">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="test" applicationName="Test" />
</providers>
</roleManager>
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="test" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="Test" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" />
</providers>
</membership>
Я схожу с ума, пытаясь понять это, поэтому любая помощь будет принята с благодарностью.