Я знаю, что это похоже на другие вопросы здесь, но я не думаю, что мой случай такой же, как у них.Зачем членство.ValidateUser возвращает false, когда пользователь одобрен и не заблокирован?
У меня есть веб-сайт, который использует AspNetSqlMembershipProvider для проверки пользователей. Я хотел бы использовать одну и ту же базу данных из консольного приложения. Согласно нескольким статьям в Интернете, я могу использовать класс System.Web.Security.Membership извне ASP.NET, скопировав соответствующие разделы из web.config в app.config. Это то, что я сделал.
Мое приложение для консоли может получить пользователя с запрошенным именем, и я могу подтвердить, что пользователь одобрен и не заблокирован, но ValidateUser возвращает false для правильной пары имени пользователя и пароля.
Я нашел статьи, в которых люди столкнулись с проблемой переноса кода, который может быть вызван несоответствием машинного ключа, но также нашел ссылку, в которой говорится, что машинный ключ используется только в том случае, если свойство passwordFormat равно зашифрованному, тогда как я использую хешированный.
Проблема в том, что две части кода - веб-сайт и консольное приложение - находятся в разных сборках, а имя сборки или другое свойство используется во время хэширования паролей? В обоих случаях для свойства имени приложения установлено значение /.
Должен ли я продолжать этот подход или просто напрямую обращаться к базе данных и сам хэш-пароль?
Вот один совет по устранению неполадок: создайте нового пользователя из приложения Windows, а затем попытайтесь проверить его учетные данные. Посмотрите, работает ли это. – gbs
Мне удалось проверить пользователя, который я создал, который заставил меня исследовать код сайта, который, в свою очередь, приведет меня к ответу, поэтому спасибо за отзыв. –