public CreateUserStatus CreateUser(RegistrationData user,
            [Required(ErrorMessageResourceName = "ValidationErrorRequiredField", ErrorMessageResourceType = typeof(ValidationErrorResources))]
            [RegularExpression("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName = "ValidationErrorBadPasswordStrength", ErrorMessageResourceType = typeof(ValidationErrorResources))]
            [StringLength(50, MinimumLength = 7, ErrorMessageResourceName = "ValidationErrorBadPasswordLength", ErrorMessageResourceType = typeof(ValidationErrorResources))]
            string password)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            // Run this BEFORE creating the user to make sure roles are enabled and the default role is available.
            //
            // If there is a problem with the role manager, it is better to fail now than to fail after the user is created.
            if (!Roles.RoleExists(UserRegistrationService.DefaultRole))
            {
                Roles.CreateRole(UserRegistrationService.DefaultRole);
            }

            // NOTE: ASP.NET by default uses SQL Server Express to create the user database.
            // CreateUser will fail if you do not have SQL Server Express installed.
            MembershipCreateStatus createStatus;
            Membership.CreateUser(user.UserName, password, user.Email, user.Question, user.Answer, true, null, out createStatus);

            if (createStatus != MembershipCreateStatus.Success)
            {
                return UserRegistrationService.ConvertStatus(createStatus);
            }

            // Assign the user to the default role.
            // This will fail if role management is disabled.
            Roles.AddUserToRole(user.UserName, UserRegistrationService.DefaultRole);

            // Set the friendly name (profile setting).
            // This will fail if the web.config is configured incorrectly.
            ProfileBase profile = ProfileBase.Create(user.UserName, true);
            profile.SetPropertyValue("FriendlyName", user.FriendlyName);
            profile.Save();

            return CreateUserStatus.Success;
        }
 /// <summary>
 /// Asynchronously invokes the 'CreateUser' method of the DomainService.
 /// </summary>
 /// <param name="user">The value for the 'user' parameter of this action.</param>
 /// <param name="password">The value for the 'password' parameter of this action.</param>
 /// <returns>An operation instance that can be used to manage the asynchronous request.</returns>
 // Unable to generate the following attributes for parameter 'password' due to the following errors:
 //
 // - The attribute 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' references type 'Example3.Web.Resources.ValidationErrorResources' that is not accessible in the client project 'Example3'. If you would like the attribute to be generated, make sure the assembly containing the attribute is referenced on the client.
 // - The attribute 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' references a property 'ValidationErrorBadPasswordStrength' on type 'Example3.Web.Resources.ValidationErrorResources' that is not accessible in the client project 'Example3'.
 // [RegularExpressionAttribute("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName = "ValidationErrorBadPasswordStrength", ErrorMessageResourceType = typeof(Example3.Web.Resources.ValidationErrorResources))]
 //
 // - The attribute 'System.ComponentModel.DataAnnotations.RequiredAttribute' references type 'Example3.Web.Resources.ValidationErrorResources' that is not accessible in the client project 'Example3'. If you would like the attribute to be generated, make sure the assembly containing the attribute is referenced on the client.
 // - The attribute 'System.ComponentModel.DataAnnotations.RequiredAttribute' references a property 'ValidationErrorRequiredField' on type 'Example3.Web.Resources.ValidationErrorResources' that is not accessible in the client project 'Example3'.
 // [RequiredAttribute(ErrorMessageResourceName = "ValidationErrorRequiredField", ErrorMessageResourceType = typeof(Example3.Web.Resources.ValidationErrorResources))]
 //
 // - The attribute 'System.ComponentModel.DataAnnotations.StringLengthAttribute' references type 'Example3.Web.Resources.ValidationErrorResources' that is not accessible in the client project 'Example3'. If you would like the attribute to be generated, make sure the assembly containing the attribute is referenced on the client.
 // - The attribute 'System.ComponentModel.DataAnnotations.StringLengthAttribute' references a property 'ValidationErrorBadPasswordLength' on type 'Example3.Web.Resources.ValidationErrorResources' that is not accessible in the client project 'Example3'.
 // [StringLengthAttribute(50, ErrorMessageResourceName = "ValidationErrorBadPasswordLength", ErrorMessageResourceType = typeof(Example3.Web.Resources.ValidationErrorResources), MinimumLength = 7)]
 //
 public InvokeOperation<CreateUserStatus> CreateUser(RegistrationData user, string password)
 {
     Dictionary<string, object> parameters = new Dictionary<string, object>();
     parameters.Add("user", user);
     parameters.Add("password", password);
     this.ValidateMethod("CreateUser", parameters);
     return ((InvokeOperation<CreateUserStatus>)(this.InvokeOperation("CreateUser", typeof(CreateUserStatus), parameters, true, null, null)));
 }