ASP.NET web.config: configSource vs. Dateiattribute

186

Innerhalb einer web.configDatei in einer ASP.NET-Anwendung unterstützen einige Abschnitte der Konfiguration, wie appSettingsund connectionStrings, die Attribute fileund configSource.

Was ist der Unterschied zwischen der Verwendung von file-attribute und configSource-attribute? Wann sollten Sie welches Attribut verwenden und können Sie beide verwenden?

<?xml version="1.0"?>
<configuration>
  <appSettings file="AppSettings.config">
  </appSettings>
  <connectionStrings configSource="ConnectionStrings.config">      
  </connectionStrings>
  <!-- ... -->
</configuration>
Seb Nilsson
quelle

Antworten:

299

file Attribut

  • Gibt einen relativen Pfad zu einer externen Datei an, die benutzerdefinierte Anwendungskonfigurationseinstellungen enthält
  • spezifisch für die appSettings Abschnitt
  • führt Einstellungen in der .config-Datei zusammen (und überschreibt sie)
  • bewirkt nicht, dass die Webanwendung neu gestartet wird, wenn die angegebene Datei geändert wird
  • http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100).aspx
  • Mit Hilfe der Konfiguration . AppSettings . Einstellungen . Das Hinzufügen einer API führt dazu, dass alle Einstellungen in .configeiner Konfiguration wieder in die Haupteinstellungen übernommen werden . Anruf speichern .
  • seit .NET 1.1
  • Eine Ausnahme wird nicht ausgelöst, wenn die Datei nicht vorhanden ist.

configSource Attribut

Das fileAttribut gibt eine externe Datei an, die benutzerdefinierte Einstellungen enthält, wie Sie es im Eintrag appSettings der Datei web.config tun. In der Zwischenzeit configSourceenthält die im Attribut angegebene externe Datei die Einstellungen für den Abschnitt, für den Sie die configSource deklarieren. Wenn Sie beispielsweise das configSourceAttribut des Seitenabschnitts verwenden, enthält die externe Datei die Einstellungen für den Seitenabschnitt.

Die in der im fileAttribut angegebenen externen Konfiguration deklarierten benutzerdefinierten Einstellungen werden mit den Einstellungen im appSettings Abschnitt in der web.configDatei zusammengeführt. In der Zwischenzeit die configSource sie nicht verschmelzenden unterstützen, bedeutet dies , dass Sie die gesamten Abschnitt Einstellung in die externe Datei bewegen müssen.

http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx

Massimiliano Peluso
quelle
10
Mit dem Attribut "Datei" können Sie auch Dateien außerhalb des unmittelbaren Verzeichnisbaums angeben. Dies ist wichtig, um gemeinsame Einstellungen für verschiedene Sites freizugeben. Leider beschränkt Sie das Attribut "configsource" auf Dateien innerhalb des aktuellen Baums. Für freigegebene Einstellungen müssen Sie daher ein virtuelles Verzeichnis in IIS angeben.
Ed Graham
6
Mein obiger Kommentar war nicht ganz richtig und ich habe anscheinend das etwas willkürliche Fünf-Minuten-Fenster verpasst, um ihn zu bearbeiten! Sie können in IIS kein virtuelles Verzeichnis festlegen, damit "configsource" -Dateien außerhalb des unmittelbaren Verzeichnisbaums gespeichert werden können. Das ist also wirklich sehr einschränkend. Ich habe es mit einem Kreuzungspunkt (oder einem NTFS-Hardlink) gelöst, aber es ist nicht gerade hübsch ...
Ed Graham
1
WAO! Tolle Antwort ... das hat mir wirklich geholfen : will not cause web application to restart when modifying the specified file. Ich muss die App neu starten, wenn ich eine Einstellung in der externen Datei für einen benutzerdefinierten Abschnitt ändere configSource. Interessant ist, dass ich verwendet habe fileund die verschiedenen Abschnitte funktionierten. filefunktioniert auch für andere Abschnitte als, appSettingsaber es gibt diese Fallstricke, die in der Antwort gut erklärt werden.
Leniel Maccaferri
4
Ich möchte zur configSource-Liste hinzufügen : It must refer to a file in the same directory or in a subdirectory as the configuration file.. Und auch zur Dateiliste : It can reside outside the directory of the configuration file itself..
Frankhommers
2
Aktualisierter Link für das appSettings-Element - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
Jarrod