2010-01-22 7 views
1

Je souhaite utiliser SqlMembershipProvider et SqlRoleProvider de .Net pour la gestion des utilisateurs dans mon application. Mon problème est que lorsque l'application démarre, elle ne connaît aucune information de connexion DB. Pour des raisons de sécurité, il doit obtenir ces informations à partir d'un service WCF qui s'exécute sur le serveur de base de données. Par conséquent, j'ai besoin de construire mon adhésion/rôle des fournisseurs après le fait..NET RoleProvider sans la connectionString

Je pense que je suis en mesure de travailler sur la création et l'ajout du fournisseur d'appartenances:

// register membership provider 
var membership = new SqlMembershipProvider(); 
var providerValues = new NameValueCollection(); 
providerValues.Add("name", "sqlMembershipProvider"); 
providerValues.Add("applicationName", "/"); 
providerValues.Add("connectionStringName", "connectionStrDynamAddedToConfig"); 
providerValues.Add("maxInvalidPasswordAttempts", "10"); 
membership.Initialize("sqlMembershipProvider", providerValues); 

je, jusqu'à présent, pas été en mesure de travailler sur quelque chose de similaire pour créer le RoleProvider. Je peux créer le fournisseur, mais je ne peux pas l'ajouter au gestionnaire de rôles. Ai-je besoin de créer un fournisseur personnalisé qui peut prendre une connectionString après l'initialisation?

Répondre

0

je suis tombé sur this page, qui recommande « télécharger le ProviderToolkitSamples et la modification de la classe SQLConnectionHelper. Plus précisément, la fonction GetConnectionString qui ressemble à quelque chose comme ça »

internal static string GetConnectionString(string specifiedConnectionString, bool lookupConnectionString, bool appLevel) 
{ 
     if (specifiedConnectionString == null || specifiedConnectionString.Length < 1) 
      return null; 

     string connectionString = null; 

     ///////////////////////////////////////// 
     // Step 1: Check <connectionStrings> config section for this connection string 
     if (lookupConnectionString) 
     { 
      ConnectionStringSettings connObj = ConfigurationManager.ConnectionStrings[specifiedConnectionString]; 
      if (connObj != null) 
       connectionString = connObj.ConnectionString; 

      if (connectionString == null) 
       return null; 
     } 
     else 
     { 
      connectionString = specifiedConnectionString; 
     } 

     return connectionString; 
    } 
} 

Texte soulevé de williablog.net, depuis que celle page dit, "les liens ont une façon de se rompre le temps"

Questions connexes