s'il vous plait, je voudrais modifier le fichier web.config d'une application web dynamiquement a partir du code behind (.cs c#)en ajoutant connectionString et membership et role manager a chaque fois qu'un utilisateur introduit un nouveau serveur ainsi une base de donnees différente ( et pour que plusieurs utilisateur utilise simultanément l’application)

j'ai commencé par créer la connexion string mais j'ai pas trouver comment faire le add providers de membership et role manager au meme temps !

voici le code:

dans une fonction en validant le nom du serveur et la bade de donnees on a:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 protected void Buttonvaliderbbd_Click(object sender, EventArgs e)
         {
            System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder();
            builder["Data Source"] = this.TextServeur.Text.ToString(); // serveur de la chaine de connexion 
            builder["Integrated Security"] = true;
            nombdd = this.DropDownListBDD.SelectedItem.Value.ToString();  // le nom de la base de donnes
 
 
            builder["Initial Catalog"] = this.DropDownListBDD.SelectedItem.Value.ToString(); // la base de doonée de la chaine de connexion
 
 
 
              /// si la connexion string n'existe pas on la crer
 
                ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings[nombdd];
                if((mySetting == null || string.IsNullOrEmpty(mySetting.ConnectionString)))
                { 
                   //  throw new Exception("Fatal error: missing connecting string in web.config file");
 
                    Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
                var section = config.GetSection("connectionStrings") as ConnectionStringsSection;
                string connectionStringvalue = builder.ConnectionString;
                string bddconnexionstring = nombdd + "ConnexionString";
                section.ConnectionStrings.Add(new ConnectionStringSettings(bddconnexionstring, connectionStringvalue, "System.Data.SqlClient"));
                config.Save();
 
 
 
                var connectionStringField = Membership.Provider.GetType().GetField("MemberShipProvider", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
  if (connectionStringField != null)
                    connectionStringField.SetValue(Membership.Provider, bddconnexionstring);
 
                   var roleField = Roles.Provider.GetType().GetField("CustomizedRoleProvider", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
                    if (roleField != null)
                  roleField.SetValue(Roles.Provider, bddconnexionstring);
 
  }else{
 
 
                string connectionStringvalue = builder.ConnectionString;    //
                Configuration connectionConfiguration = WebConfigurationManager.OpenWebConfiguration("~");
                connectionConfiguration.ConnectionStrings.ConnectionStrings[nombdd].ConnectionString = connectionStringvalue;
                connectionConfiguration.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("connectionStrings");
}
svp c'est urgent merci d'avance.