2011-01-13 4 views

Répondre

2

Essayez le code ci-dessous ou un problème LINQ une requête pour trouver le compliment (différences) des deux configs. Les vrais yeilds suivants si la chaîne de connexion à l'index 0 vient de la configuration de la machine où il compare également la chaîne de connexion à l'index 0 donne sinon false:

System.Configuration.ConfigurationManager.ConnectionStrings[0].Equals 
(System.Configuration.ConfigurationManager.OpenMachineConfiguration() 
.ConnectionStrings.ConnectionStrings[0]) 
+0

J'aime l'idée de LINQ. Je n'ai pas encore implémenté cela, mais je suis sûr que cela fonctionnera. Merci! – Jeff

+0

un exemple de code sur la solution? – Kiquenet

0

Chaque configuration dans le web.config peut également être mis en machine.config. Vous pouvez penser à Machine.Config est la classe de base et Web.Config est la sous-classe.

Donc, si vous remplacez les paramètres dans web.config, vous surchargez essentiellement les paramètres de configuration de la machine (ou de demander l'application à utiliser les paramètres web.config)

Je pense donc que si vous écrivez piquent les connexions dans le Web .config, puis à partir de votre application lorsque vous boucle à travers les connectionStrings

ConfigurationManager.ConnectionStrings 

vous serez en mesure d'accéder uniquement les chaînes de connexion que vous avez écrit dans web.config.

Veuillez essayer le <clear/> dans la section webConfig connectiontring. Donc je pense que cela effacera les chaînes de connexion Machine.config.

+0

Um. Quelle? La première déclaration a du sens, mais pas le reste. –

+0

Édité ma réponse. veuillez corriger si ma compréhension est fausse. – KBBWrite

+0

C'est ce que j'essaie déjà de faire. La collection ConfigurationManager.ConnectionStrings contient des chaînes de connexion à partir de web.config et de machine.config. – Jeff

1

Avez-vous essayé

Configuration c = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/"); 
+0

J'ai essayé ceci et j'obtiens seulement les chaînes de connexion de la machine.config. Pas * exactement * ce que je cherche mais il semble que ce sera faisable. – Jeff

1

De MSDN, regardez également l'espace de noms System.Web.Configuration .

How to: Read Connection strings from the Web.config file

System.Configuration.Configuration rootWebConfig = 
      System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/MyWebSiteRoot"); 
     System.Configuration.ConnectionStringSettings connString; 
     if (rootWebConfig.ConnectionStrings.ConnectionStrings.Count > 0) 
     { 
      connString = 
       rootWebConfig.ConnectionStrings.ConnectionStrings["NorthwindConnectionString"]; 
      if (connString != null) 
       Console.WriteLine("Northwind connection string = \"{0}\"", 
        connString.ConnectionString); 
      else 
       Console.WriteLine("No Northwind connection string"); 
     } 
0

Pour obtenir la première ConnectionString à localweb.config, utilisez:

var ms = System.Configuration.ConfigurationManager.OpenMachineConfiguration(); 
if (ConfigurationManager.ConnectionStrings.Count > ms.ConnectionStrings.ConnectionStrings.Count) 
      return ConfigurationManager.ConnectionStrings[ms.ConnectionStrings.ConnectionStrings.Count].ConnectionString; 
Questions connexes