Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   C# ConnectionString aus Web.Config auslesen (https://www.delphipraxis.net/90930-connectionstring-aus-web-config-auslesen.html)

Jelly 26. Apr 2007 08:55


ConnectionString aus Web.Config auslesen
 
In der Hilfe hab ich folgenden Code gefunden, um aus der web.Config Datei eines ASP.NET Projektes einen connectionstring auszulesen:
Code:
        String str;
        System.Configuration.Configuration rootWebConfig =
             System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
        System.Configuration.ConnectionStringSettings connString;
        if (0 < rootWebConfig.ConnectionStrings.ConnectionStrings.Count)
        {
            connString =
                rootWebConfig.ConnectionStrings.ConnectionStrings[0];
            if (null != connString)
                str = connString.ConnectionString;
            else
                str = @"n/a";
            TextBox1.Text = rootWebConfig.FilePath + "   "+ str;
        }
Es steht in der Hilfer weiterhin:
Zitat:

Zitat von Online Hilfe
To obtain configuration settings for the root-level Web configuration, null is passed to the OpenWebConfiguration method.

Das heisst für mich, es wird die web.config Datei geladen, die auch in meinem Webverzeichnis liegt.
Gebe ich mir aber den FilePath anschliessend an, so steht dadrin
Code:
rootWebConfig.FilePath = "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\web.config"
Warum das :gruebel:

Elvis 26. Apr 2007 08:59

Re: ConnectionString aus Web.Config auslesen
 
"Root config" ist in dem Fall die Config, die für die ganze Maschine gilt.

Jelly 26. Apr 2007 09:05

Re: ConnectionString aus Web.Config auslesen
 
OK.
Mit der Kenntnis klappts dann so bei mir:
Code:
System.Configuration.Configuration WebConfig =
             System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
Merci.

Elvis 26. Apr 2007 09:24

Re: ConnectionString aus Web.Config auslesen
 
Ich bin nicht so der Webfritze, also etwas Rücksicht für eventuellen Blödsinn büdde: ;)
Normalerweise ist das Config-Modell von .Net so ausgelegt, dass man immer eine "zusammengeschobene" Ansicht auf alle Config-Daten bekommt.
Also, du siehst die Dinge der Machine.config, der Config von benutzten Assemblies und natürlich deiner eigenen, alle zusammen als eine Config.
Das sollte eigentlich auch für die Web.config in Unterordnern gelten.
Wenn du die Werte der übergeordneten .config nicht haben willst, kannst du in dem Element an den Anfang ein <clear> einfügen.

Jelly 26. Apr 2007 09:31

Re: ConnectionString aus Web.Config auslesen
 
Durch Angabe von ~ in der OpenWebConfiguration Methode gebe ich, dass das webverzeichnis genommen werden soll. Dort liegt ja mein web.config.
Bei null nimmt er die datei aus dem Windows32 Verzeichnis.

Elvis 26. Apr 2007 09:55

Re: ConnectionString aus Web.Config auslesen
 
Warum nicht einfach so?
Code:
ConnectionStringSettings connectionSettings = WebConfigurationManager.ConnectionStrings["Mööp"];
if(connectionsettings != null)
{
  DbProviderFactory factory = DbProviderFactories.GetFactory(connectionSettings.ProviderName);
  using(DbConnection connection = factory.CreateConnection())
  using(DbCommand command = connection.CreateCommand())
  {
    connection.ConnectionString = connectionSettings.ConnectionString;
    ...
  }
}

Jelly 26. Apr 2007 10:04

Re: ConnectionString aus Web.Config auslesen
 
Weil "Mööp" kein valides Verzeichnis ist.
ConnectionStrings erwartet entweder null als Parameter oder einen Pfad zur web.config.
Bei null wird eben im Windows Verzeichnis nach den config Files gesucht, und bei "~" im Webverzeichnis der Anwendung.

Natürlich kannst du ein Unterverzeichnis "Mööp" anlegen, und dort alternative .config Files hinlegen. Dann dürfte deine Variante funktionieren. (ungetestet)

Elvis 26. Apr 2007 10:08

Re: ConnectionString aus Web.Config auslesen
 
Nene, ich verwende die statische Eigenschaft ConnectionStrings direkt auf der Klasse WebConfigurationManager.
Dadurch bekomme ich den ConnectionStringBlabla mit dem angegebenen Namen, der in der aktuellen Ebene gültig ist.
Hast du also in einem Unterverzeichnis einen anderen ConnectionString mit gleichem Namen in der web.config hinterlegt. wird dann dieser hergenommen.

Jelly 26. Apr 2007 11:50

Re: ConnectionString aus Web.Config auslesen
 
Zitat:

Zitat von Elvis
Nene, ich verwende die statische Eigenschaft ConnectionStrings direkt auf der Klasse WebConfigurationManager.
Dadurch bekomme ich den ConnectionStringBlabla mit dem angegebenen Namen, der in der aktuellen Ebene gültig ist.

:idea: Aha. Demnach ist
Code:
ConnectionStringSettings connectionSettings = WebConfigurationManager.ConnectionStrings["Mööp"];
und
Code:
System.Configuration.Configuration webConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
System.Configuration.ConnectionStringSettings connStr;
connStr = webConfig.ConnectionStrings.ConnectionStrings["Mööp"];
genau dasselbe! Oder?

Elvis 26. Apr 2007 12:08

Re: ConnectionString aus Web.Config auslesen
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von Elvis
Nene, ich verwende die statische Eigenschaft ConnectionStrings direkt auf der Klasse WebConfigurationManager.
Dadurch bekomme ich den ConnectionStringBlabla mit dem angegebenen Namen, der in der aktuellen Ebene gültig ist.

:idea: Aha. Demnach ist
Code:
...
und
Code:
...
genau dasselbe! Oder?

Nope, gibst du ihm ~ als Ordner, wird er den Root deines VDirs nehmen.
Mein Code gibt alle Einstellungen, relativ zur ausführenden Assembly.
In ASPX 2.0 wird der Code jedes Ordners in eine eigene Assembly kompiliert, und somit kann eine Funktion[1] unterschiedliche Config Daten sehen, je nachdem von aus sie aufgerufen wird.


[1]selbst wenn sie in einer referenzierten DLL liegt


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz