2012-01-02 6 views
1

У меня было рабочее членство asp.net 4 в течение 5 месяцев, и сегодня я изменил регулярное выражение, чтобы ослабить ограничения пароля. Я все еще могу создавать и получать доступ к новым учетным записям, но больше не могу обращаться к ранее зарегистрированным.ASP.NET 4 членский ключ машины

Я проверил базу данных и подтвердил, что они все еще там. Моя первоначальная мысль была неправильным паролем. Я проверил две учетные записи, в которых я знал пароль, и оба они недоступны. Я попытался использовать параметр восстановления пароля, но когда я ввожу имя пользователя, мне говорят, что пользователь не существует.

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

+0

Просто заметил, что идентификатор приложения отличается для новых пользователей в таблице членства. Может ли это быть причиной ошибки? Если да, то как мне изменить его на старый? – Rob

ответ

1

Как и ваш комментарий, моя первая мысль заключалась в том, что ключ приложения был изменен. Этот ключ хранится в web.config/system.web/членство:

<membership> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" 
     ... 
     applicationName="YOUR_KEY_HERE" /> 
    </providers> 
</membership> 

Эта клавиша позволяет различным приложениям с провайдером же членства (например System.Web.Security.SqlMembershipProvider в вашем случае), чтобы использовать ту же базу данных для хранения данных членства.

Один провайдер не будет видеть пользователей от другого провайдера и наоборот, поскольку они учитывают имя приложения при запросе базы данных. Но когда вы смотрите на таблицу «Пользователи», вы можете сразу не заметить это отношение, так как SqlMembershipProvider использует таблицу Guid в таблице Users. Но это внешний ключ к таблице приложений, где вы можете найти имя приложения.

Смотрите также: Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers

0

Моя проблема была немного иной *, но я указал свой собственный машинный ключ в web.config. Смотрите подробности здесь: http://msdn.microsoft.com/en-us/library/ff649308.aspx

(. * Мое приложение блуждал от сервера к серверу в большой виртуальной фермы серверов, следовательно, изменения ключа машины с каждым прыжком вызывает приложение будучи не в состоянии прочитать куки он ранее установленные)

+2

Это, к счастью, не было ничего общего с машинным ключом. Это было изменение имени приложения, потому что я сделал копию сайта, чтобы внести некоторые важные изменения и загрузить из копии, чтобы новые члены могли получить доступ к своим учетным записям, но предыдущие члены не могли. Я исправил это, добавив оба имени приложения в файл web.config и hey presto, это сработало! – Rob

Смежные вопросы