[SharePoint] SqlMembershipProvider.CreateUser y el maldito MembershipCreateStatus.InvalidAnswer
En una aplicación sobre SharePoint 2010 con SqlMembership Provider (Claims) me he encontrado que a la hora de crear un usuario en la página de registro, me mostraba siempre un error que me decía que la pregunta y respuesta no son válidas. Revisando la configuración del MembershipProvider en el web.config he visto que la opción de requerir pregunta y respuesta no estaba deshabilitada:
<membership defaultProvider="i">
<providers>
<add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider" .../>
<add connectionStringName="FBAConnectionString"
passwordAttemptWindow="5"
enablePasswordRetrieval="true"
enablePasswordReset="false"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="true"
passwordFormat="Hashed"
description="Stores and Retrieves membership data from SQL Server"
name="MembershipProvider"
type="System.Web.Security.SqlMembershipProvider..." />
</providers>
</membership>
y aún así seguía requeriendola en el método CreateUser:
sqlProvider.CreateUser(UserNameTextBox.Text,
PasswordTextBox.Text,
UserNameTextBox.Text,
String.Empty,
String.Empty,
true,
Guid.NewGuid(),
out status);
¿Cual es entonces el problema?
Pues si leemos la documentación de la msdn, nos dice claramente que para estos 2 parámetros tenemos que pasar el valor null si queremos que no los tenga en cuenta, si le pasamos el valor String.Empty no tiene en cuenta la configuración del web.config y lo trata como que es requerida y claro está que podría hacer caso de la configuración del Membership del web.config primero. Así pues para que funcione pasamos null:
sqlProvider.CreateUser(UserNameTextBox.Text,
PasswordTextBox.Text,
UserNameTextBox.Text,
null,
null,
true,
Guid.NewGuid(),
out status);
Un saludo.