You dont need to implement your own membership provider, if your trying to use the default create user control of asp.net, your going to run into headaches eliminating the security question, your best bet is to take a minute or two and write your own, it's fairly simple.
You can access all the properties of the membership system through the keyword membership.
Your probably going to want to do something similar to this.
Just create your own page with lablels, textboxes, and a submit button
Once you have that done, you can do something very similar to this: (I'm just copying and pasting the entire code section from my own app)
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If Page.IsValid Then
If Not InsertUser() = "failed" Then
If Not CreateProfile() = False Then
Response.Redirect("newaccount.aspx?avcx=")
End If
End If
End If
End Sub
Public Function InsertUser() As String
Dim UserName, password, email, secquestion, secanswer As String
UserName = TextBox1.Text
password = TextBox2.Text
email = TextBox4.Text
secquestion = DropDownList1.SelectedItem.Text
secanswer = TextBox5.Text
Dim status As MembershipCreateStatus
Try
Dim newUser As MembershipUser = Membership.CreateUser(UserName, password, email, secquestion, secanswer, True, status)
If newUser Is Nothing Then
ErrorMessage.Text = GetErrorMessage(status)
Return "failed"
Else
If Membership.ValidateUser(newUser.ToString, password) Then
FormsAuthentication.SetAuthCookie(newUser.ToString, True)
SendMail.NewAccount("newaccount@liquidhue.com", "Account Registration", True, "Your new account is registered", email, "Testing")
Return newUser.ToString
End If
End If
Catch ex As Exception
ErrorMessage.Text = ex.Message.ToString
Return "failed"
End Try
Return "failed"
End Function
Public Function GetErrorMessage(ByVal status As MembershipCreateStatus) As String
Select Case status
Case MembershipCreateStatus.DuplicateUserName
Return "Username already exists. Please enter a different user name."
Case MembershipCreateStatus.DuplicateEmail
Return "A username for that e-mail address already exists. Please enter a different e-mail address."
Case MembershipCreateStatus.InvalidPassword
Return "The password provided is invalid. Please enter a valid password value."
Case MembershipCreateStatus.InvalidEmail
Return "The e-mail address provided is invalid. Please check the value and try again."
Case MembershipCreateStatus.InvalidAnswer
Return "The password retrieval answer provided is invalid. Please check the value and try again."
Case MembershipCreateStatus.InvalidQuestion
Return "The password retrieval question provided is invalid. Please check the value and try again."
Case MembershipCreateStatus.InvalidUserName
Return "The user name provided is invalid. Please check the value and try again."
Case MembershipCreateStatus.ProviderError
Return "The authentication provider returned an error. Please verify your entry and try again. If the problem persists, please contact LiquidHue Support."
Case MembershipCreateStatus.UserRejected
Return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact LiquidHue Support."
Case Else
Return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact LiquidHue Support."
End Select
End Function
You'll see a section that refers to the "Profile" you can ignore that if your not using a profile system.