У меня проблема, которую я не могу понять. Надеюсь, кто-то может указать мне в правильном направлении или дать мне другие идеи для изучения. Теперь я не буду предлагать много кода, потому что, честно говоря, я не думаю, что это проблема с кодировкой.Проблема с членством в ASP.NET/SQL Server - отсутствующие данные
Во-первых, у меня есть веб-приложение ASP.NET 3.5. Я использую библиотеки членства ASP.NET для моей аутентификации. Данные находятся в базе данных SQL Server 2005.
Мое приложение позволяет пользователю заполнить запрос, который будет сохранен в базе данных. Страницы, чтобы заполнить запрос находится в папке, которая содержит следующий файл web.config (я хочу пользователей для аутентификации, прежде чем они заполнить заявку):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
пользователю необходимо войти в систему или зарегистрироваться новую учетную запись для заполнения запроса. Когда они отправляют запрос, они получают подтверждение по электронной почте, которое было отправлено. Адрес получателя этой электронной проверки собрана с помощью:
Membership.GetUser().Email
До сих пор все это кажется довольно элементарным и работал без сучка и задоринки. Тем не менее, я только что получил несколько звонков от наших пользователей людей, которые заполнили запрос и получили электронное письмо, но запрос не найден в системе. Я заставил их направить мне письма с подтверждением, чтобы я мог просмотреть адрес получателя и найти пользователя в таблицах членства ASP.NET. Тем не менее, я не мог найти пользователя на основе электронной почты, и я не мог найти никаких следов запроса в базе данных, когда мне были даны подробные сведения о том, что они ввели.
Я не предлагаю пользователям удалять свои учетные записи или удалять запрос. Нет способа изменить адрес электронной почты или изменить соответствующие данные. База данных довольно закрыта, и все запросы выполняются через хранимые процедуры.
Теперь, мой вопрос: как это возможно? Пользователь должен пройти аутентификацию, чтобы заполнить запрос, и у меня есть письмо с подтверждением с адресом электронной почты, который я не могу найти в системе. Адрес электронной почты собирается с использованием метода, упомянутого выше, который мне доказывает, что этот пользователь должен существовать в базе данных с указанным адресом электронной почты за один раз.
У меня действительно нет ни малейшего понятия, откуда исходить. Есть ли у кого-нибудь идеи о том, что проверить? Я был бы признателен за любые советы, поскольку я в тупик, и я могу предоставить любую дополнительную информацию, если это необходимо.
Заранее благодарен!
Можем ли мы увидеть код функции, которая сохраняет запись, а затем отправить электронное письмо? – David
Это простой, прочный вызов хранимой процедуры, но проходит через многоуровневую систему. Я не уверен, что это уместно, потому что я не могу отследить данные о членстве в ASP.NET, даже если письмо было отправлено с помощью функции Membership.GetUser(). Я знаю, что письмо было отправлено, хотя форма защищена, как описано выше. –
Предполагается, что вы также проверили базу данных для параметра LastActivity, установленного во время отправки сообщения электронной почты? Я согласен, что это странно, потому что GetUser не только соединяется с базой данных, чтобы читать информацию о пользователях, но также обновляет ее со временем ее появления ... –