Если вы используете проверку подлинности с помощью форм asp.net, она уже предоставляет механизмы для сброса пароля с помощью секретного вопроса. Это можно настроить в файле Web.config и использовать с элементом управления Password Recovery, частью элементов управления входом ASP.net.
Настройка в web.config в разделе провайдеров членства:
requireQuestionAndAnswer - Если задано значение true, представление Вопрос будет требоваться для получения или сброса пароля пользователя. Когда установлено значение false, представление Вопроса не отображается для пользователя.
С помощью элемента управления Password Recovery приведен пример кода:
<asp:PasswordRecovery ID="PasswordRecovery1" runat="server">
<QuestionTemplate>
<h2>Forgot Password</h2>
Hello <asp:Literal ID="UserName" runat="server"></asp:Literal><br />
Please answer your password question : <br />
<asp:Literal ID="Question" runat="server"></asp:Literal>
<asp:TextBox ID="Answer" runat="server"></asp:TextBox><br />
<asp:Button ID="SubmitButton" runat="server" Text="Send Answer By Mail"
CommandName="Submit"/><br />
<asp:Literal ID="FailureText" runat="server"></asp:Literal>
</QuestionTemplate>
</asp:PasswordRecovery>
Для получения дополнительной информации об использовании элементов управления входом ASP.net перейдите на http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/login/default.aspx
Если вы не отправляете электронное письмо, вы можете отменить его, добавив OnSendingMail = "CancelEmail" в элемент управления восстановлением пароля, а затем добавьте код, как показано ниже, и просто отобразите новый пароль сброса на экране.
Sub CancelEmail(ByVal sender As Object, ByVal e As MailMessageEventArgs)
e.Cancel = True
End Sub
Надеюсь, это поможет!