2011-01-13 3 views

Antwort

2

Versuchen Sie den Code unten oder Ausgabe Linq eine Abfrage, um das Kompliment (Unterschiede) beiden configs zu finden. Die folgenden yeilds true, wenn Verbindungszeichenfolge bei Index 0 aus der Maschine Config kommt, wo er vergleicht auch die Verbindungszeichenfolge bei Index 0 sonst false ergibt:

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

Ich mag die LINQ-Idee. Ich habe das noch nicht implementiert, aber ich bin mir sicher, dass es funktionieren wird. Vielen Dank! – Jeff

+0

irgendein Beispielcode über die Lösung? – Kiquenet

0

Jede Konfiguration in der Web.Config auch in machine.config gesetzt werden kann. Sie können sich Machine.Config ist die Basisklasse und die Web.Config ist die Unterklasse.

Also, wenn Sie Einstellungen in Web.Config außer Kraft setzen, die Sie überschreiben grundsätzlich die Maschine Konfigurationseinstellungen (oder die Anwendung fragt die web.config-Einstellungen verwenden)

Ich denke also, wenn Sie Verbindungen Stachel in Web schreiben .Config, dann aus Ihrer Anwendung, wenn Sie eine Schleife durch die connection

ConfigurationManager.ConnectionStrings 

Sie in der Lage sein wird, nur die Verbindungszeichenfolgen für den Zugriff auf die Sie in web.config geschrieben haben.

Versuchen Sie die <clear/> in der Web.config Connectionstring Abschnitt. Also denke ich, dass die Machine.config Verbindungszeichenfolgen gelöscht werden.

+0

Um. Was? Die erste Aussage macht Sinn, aber der Rest nicht. –

+0

Bearbeitete meine Antwort. Bitte korrigieren Sie, wenn mein Verständnis falsch ist. – KBBWrite

+0

Das versuche ich bereits. Die ConfigurationManager.ConnectionStrings-Auflistung enthält Verbindungszeichenfolgen aus der Datei web.config und der Datei machine.config. – Jeff

1

haben Sie

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

Ich habe das versucht und ich bekomme nur die Verbindungszeichenfolgen aus der machine.config. Nicht * genau * wonach ich suche, aber es scheint, als wäre es praktikabel. – Jeff

1

Von MSDN, auch Blick auf die System.Web.Configuration Namespace .

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

Für erste Connection in localweb.config erhalten, verwenden es:

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