Hi
I was wondering if someone could help me with an issue I am having. I have a createuserwizard which I am customizing. However, I seem to be getting a System.NullReferenceException when clicking the createuser button. Please see code attached:
<asp:CreateUserWizard ID="CreateUserWizard" runat="server" ActiveStepIndex="0"
CancelDestinationPageUrl="~/Home.aspx" ><WizardSteps><asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server"><ContentTemplate><asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label><br /><asp:TextBox ID="UserName" CssClass="singleline" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="CreateUserWizard1" CssClass="validation"></asp:RequiredFieldValidator><br /><br /><asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label><br /><asp:TextBox ID="Password" runat="server" CssClass="singleline" TextMode="Password"></asp:TextBox><asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="CreateUserWizard1" CssClass="validation"></asp:RequiredFieldValidator><br /><br /><asp:Label ID="ConfirmPasswordLabel" runat="server" AssociatedControlID="ConfirmPassword">Confirm Password:</asp:Label><br /><asp:TextBox ID="ConfirmPassword" runat="server" CssClass="singleline" TextMode="Password"></asp:TextBox><asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" ControlToValidate="ConfirmPassword" ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required." ValidationGroup="CreateUserWizard1" CssClass="validation"></asp:RequiredFieldValidator><br /><br /><asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label><br /><asp:TextBox ID="Email" runat="server" CssClass="singleline" ></asp:TextBox><asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email" ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1" CssClass="validation"></asp:RequiredFieldValidator><br /><br /> <asp:Label ID="QuestionLabel" runat="server" AssociatedControlID="Question">Security Question:</asp:Label><br /><asp:TextBox ID="Question" runat="server" CssClass="singleline"></asp:TextBox><asp:RequiredFieldValidator ID="QuestionRequired" runat="server" ControlToValidate="Question" ErrorMessage="Security question is required." ToolTip="Security question is required." ValidationGroup="CreateUserWizard1" CssClass="validation"></asp:RequiredFieldValidator><br /><br /><asp:Label ID="AnswerLabel" runat="server" AssociatedControlID="Answer">Security Answer:</asp:Label><br /><asp:TextBox ID="Answer" runat="server" CssClass="singleline" ></asp:TextBox><asp:RequiredFieldValidator ID="AnswerRequired" runat="server" ControlToValidate="Answer" ErrorMessage="Security answer is required." ToolTip="Security answer is required." ValidationGroup="CreateUserWizard1" CssClass="validation"></asp:RequiredFieldValidator><br /><br /><asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="Password" ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match." ValidationGroup="CreateUserWizard1" CssClass="validation"></asp:CompareValidator><asp:Label ID="ErrorLabel" runat="server"></asp:Label><asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal></ContentTemplate><CustomNavigationTemplate><asp:Button ID="CancelButton" runat="server" Text="Cancel" CssClass="button" CommandName="Cancel" /> <asp:Button ID="StepNextButton" runat="server" Text="Create User" ValidationGroup="CreateUserWizard1" onclick="CreateUserWizardStep1_Click" CssClass="button" /></CustomNavigationTemplate></asp:CreateUserWizardStep><asp:WizardStep runat="server" Title="Additional Information"><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></asp:WizardStep><asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server"
AllowReturn="False"></asp:CompleteWizardStep></WizardSteps></asp:CreateUserWizard>The code behind is as follows:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void CreateUserWizardStep1_Click(object sender, EventArgs e)
{
if (CreateUserWizard.ActiveStepIndex == 0)
{
TextBox UserName = (TextBox)CreateUserWizard.FindControl("UserName");
TextBox Password = (TextBox)CreateUserWizard.FindControl("Password");
TextBox ConfirmPassword = (TextBox)CreateUserWizard.FindControl("ConfirmPassword");
TextBox EmailAddress = (TextBox)CreateUserWizard.FindControl("Email");
TextBox SecurityQuestion = (TextBox)CreateUserWizard.FindControl("Question");
TextBox SecurityAnswer = (TextBox)CreateUserWizard.FindControl("Answer");
Label ErrorLabel = (Label)CreateUserWizard.FindControl("ErrorLabel");
MembershipCreateStatus status;
try
{
MembershipUser createuser = Membership.CreateUser(UserName.Text, Password.Text, EmailAddress.Text, SecurityQuestion.Text, SecurityAnswer.Text, true, out status);
if (createuser == null)
{
//UserAccountCreationLabel1.Visible = true;
ErrorLabel.Text = GetErrorMessage(status);
}
else
{
Roles.AddUserToRole(UserName.Text, "Normal");
}
}
catch
{
ErrorLabel.Text = "An exception occurred creating the user. Please email system administrator";
}
}
else
{
Response.Redirect("Home.aspx");
}
}
public string GetErrorMessage(MembershipCreateStatus status)
{
switch (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 your system administrator.";
case MembershipCreateStatus.UserRejected:
return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact your system administrator.";
default:
return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact your system administrator.";
}
}I am putting in data I know that should work. However, when I run the code in debug mode I can see it is going straight to the catch statement ErrorLabel and producing a System.NullReferenceException.
Can anyone see where my code is going wrong?
Thanks
Rob