Текущий проект:
У меня возникла очень странная проблема с перенастроенной базой данных.Старая база данных не может быть спасена (неправильный дизайн, неправильно введенные данные, работы), поэтому для клиента была разработана и построена совершенно новая система.
Из-за плохого состояния данных миграция была вынужденанаказание через Excel, чтобы можно было очистить данные и выполнить некоторые сложные вычисления и проверки для определенных полей.
Я повторно импортировал данные таким образом, что для пользователей, их полей PasswordHash и SecurityStampбыли нулевые значения (настройка по умолчанию).Затем я запустил в браузере безголовый скрипт (ActionResult, который просто перенаправил обратно в / Home / Index после того, как это было сделано), который прошел через всех пользователей и назначил им случайный GUID в качестве пароля.Предполагалось, что электронное письмо для сброса пароля будет разослано всем.
К сожалению, для 102 пользователей из более чем 2000 этот сценарий без заголовка не смог обновить пользователя.Например, PasswordHash и SecurityStamp оставались нулевыми.
Эта проблема теперь распространяется на сообщение электронной почты для сброса пароля, которое было отправлено.Ссылка в каждом электронном письме работает, так как она способна сбросить 95% всех учетных записей, но для этих 102 учетных записей она совершенно не может очистить, установить или сбросить пароль.Я попытался отладить это, но отладчик не погружается в UserManager (понятно), и поэтому я не могу увидеть, где и как он выходит из строя.
Поскольку 95% всех учетных записей работают нормально, единственное, чтоЯ могу придумать, что с базой данных что-то не так, что UserManager не может обновить эти конкретные строки.К сожалению, тщательное изучение таблицы «Пользователь» не показывает каких-либо особых различий между 102 затронутыми учетными записями и любой незатронутой учетной записью - нет согласованности с этими 102 всплывающими учетными записями.
Попытки установить оба поля в некоторыезначение через MSSQL, включая пустые строки, не имеет значения.
Предложения?Честно говоря, я понятия не имею, что нужно показать или какие дополнительные вопросы мне следует задавать в это время.
РЕДАКТИРОВАТЬ
MASSIVE WHISKY-Момент TANGO-FOXTROT здесь, ребята.
Оказывается, что IS сходство между всеми учетными записями ... ИМЕНА ПОЛЬЗОВАТЕЛЕЙ все имеют нецифровую,нецелые символы.Как плюс (+) или тире (-).Проблема в том, что дефисы часто встречаются во многих доменных именах (не говоря уже о самом имени пользователя электронной почты), а плюсы широко используются в плюс-адресации для определенных провайдеров, таких как gMail.
Я подтвердил, что добавлениеплюс или тире в любой части имени пользователя приводит к сбою любого вида набора, удаления или сброса пароля через UserManager.
Я сделал это, выбрав пользователя, который еще не использовализ их ссылки сброса, изменили свое имя пользователя, чтобы оно имело тире, попытался (и не смог!) сбросить пароль, затем удалил тире и попытался снова (и успешно!).
Так ясно что-нибудь в имени пользователяэто не аз, 0-9 и.вызывает невероятный сбой UserManager.
Как это происходит, мне не под силу.Я буквально не могу даже.
Я ищу руководство и руководство по этому вопросу, потому что мой разум - не что иное, как множество маленьких осколков по всему моему офису прямо сейчас.Мне нужно иметь возможность принимать тире и плюсы в именах пользователей, не перекрывая весь набор функций установки / удаления / сброса пароля.
PlЛегко также понять, что эта система использует систему DotNet - все, что здесь происходит, выходит за рамки всего, что я лично коснулся.Единственный возможный способ проникновения чего-либо - это то, что обычная запись имени пользователя через веб-форму имеет свое имя пользователя, «очищенное» так, что такие вещи, как тире и плюсы, фактически не являются таковыми в поле базы данных UserName.