IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Modifier le fichier webconfig a partir du code behind c# asp.net


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut Modifier le fichier webconfig a partir du code behind c# asp.net
    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.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Modifier le web.config implique que ton application/site va redémarrer...c'est vraiment le comportement que tu souhaites ? Quid des utilisateurs connecté et des modifications qu'ils étaient entrain d'effectuer...???

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    Justement c'est pas ce que je veux. Je vous explique:

    j'ai une application web qui peut être utilisé par plusieurs utilisateurs a un instant t, donc a chaque fois q'un utilisateur se connecte avec l'introduction du nom d'un serveur et de la base de donnes ceci implique une création d'une connectionstring et (providers membership et role managers corrspendante a cette connection) sans écraser la connectionstring de l'utilisateur courant.
    Merci.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Jamais testé dans ce cas là mais ne créerais tu pas ton propre membership (en heritant de sqlmembership) et tu lui passerais en fonction du login les infos nécessaires...tu trouveras de la doc sur le msdn.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    Plus de détails SVP parce que la je suis perdu

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Comme je disais l'idée est de créer ton propre membership ce qui te permettra d'ajouter les infos manquantes. Pour cela tu peux te baser sur la documentation du msdn
    Une fois ton membership créé c'est celui que tu référenceras dans ton web.config et le tour sera joué...

    ++

  7. #7
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    d'accord une dernière question svp:

    je voudrais a chaque création d'une connectionstring implique création de la balise membership et rolemanager,
    j'ai parvenu a créer connectionstring dynamiquement a partir du code behind c# mais pour rolemangers et membership j'ai pas pu

    voisi les details
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     <connectionStrings>
              <add name="MaConnectionString" connectionString="Data Source=SDSIT01\SQLEXPRESS;Initial Catalog=atelier4;Integrated Security=True"
              providerName="System.Data.SqlClient" />
             <add name="atelier4ConnexionString" connectionString="Data Source=SDSIT01\SQLEXPRESS;Initial Catalog=atelier4;Integrated Security=True"
               providerName="System.Data.SqlClient" />
               <add name="nouvelleconnectionstring" ...................................................................................................................................../>
               <add name="nouvelleconnectionstring" ...................................................................................................................................../>
               <add name="nouvelleconnectionstring" ...................................................................................................................................../>  
     
             // a chaque fois une nouvelle connectionString se créer pour ne pas écraser les données d'un autre utilisateur si il utilise l'application
     
     
      </connectionStrings>


    et entre temps je dois faire le add de memberships et role managers aussi et la je bloque


    donc je devrai avoir:

    Code XML : 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
     
     <membership defaultProvider="MemberShipProvider">
          <providers>
     
     
            <add connectionStringName="MaConnectionString" applicationName="TALUtilisateur" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="MemberShipProvider" type="System.Web.Security.SqlMembershipProvider" />
          </providers>
     
    <add connectionStringName="atelier4ConnexionString" applicationName="TALUtilisateur" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="MemberShipProvider" type="System.Web.Security.SqlMembershipProvider" />
     
     
    <add connectionStringName="NouvelleconnectionString"................................................................................................................................................................  />
     
    <add connectionStringName="NouvelleconnectionString"................................................................................................................................................................  />
     
    <add connectionStringName="NouvelleconnectionString"................................................................................................................................................................  />
      // correspondante a la connectionString
    </providers>
        </membership>



    et au niveau de role managers aussi:

    Code XML : 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
     
       <roleManager enabled="true" defaultProvider="CustomizedRoleProvider">
          <providers>
            <clear />
            <add applicationName="TALUtilisateur" connectionStringName="MaConnectionString" name="CustomizedRoleProvider" type="System.Web.Security.SqlRoleProvider" />
     
     
           <add applicationName="TALUtilisateur"   connectionStringName="atelier4ConnexionString" name="CustomizedRoleProvider" type="System.Web.Security.SqlRoleProvider" />
     
     
           <add applicationName="TALUtilisateur"   connectionStringName="nouvelleconnectionString" ............................................................................................................./>
     
           <add applicationName="TALUtilisateur"   connectionStringName="nouvelleconnectionString" ............................................................................................................./>
     
           <add applicationName="TALUtilisateur"   connectionStringName="nouvelleconnectionString" ............................................................................................................./>
     
     
          </providers>
     
        </roleManager>

    et merci beaucoup !

  8. #8
    Membre chevronné
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Par défaut
    Bonjour graba.kenza,

    Pourquoi souhaitez-vous que ces chaines de connexion soient ajoutées dans le fichier de configuration de l'application ?

    Vous pourriez les stocker dans un autre fichier (ou dans une base de données) avec un nom particulier, et créer une méthode du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string ObtenirChaineDeConnexion(string nomConnexion);
    qui retournerait la chaîne de connexion correspondante.

Discussions similaires

  1. modifier un parametre css a partir du code php
    Par samsoft13 dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2013, 09h49
  2. Réponses: 7
    Dernier message: 20/09/2012, 13h13
  3. Réponses: 0
    Dernier message: 13/04/2009, 17h44
  4. Modifier un fichier de configuration par le code
    Par Nuloprog dans le forum C#
    Réponses: 5
    Dernier message: 30/01/2009, 18h07
  5. Comment créer une page HTML à partir du code behind ?
    Par totoche9 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 01/08/2006, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo