Frage

Ich schreibe eine Seite, die ein paar verschiedenen Themen verwenden kann, und ich werde einige Informationen über jedes Thema in der web.config speichern.

Ist es effizienter, ein neues section zu schaffen und alles zusammen zu lagern, oder einfach nur alles setzt in appSettings?

configSection Lösung

<configSections>
    <sectionGroup name="SchedulerPage">
        <section name="Providers" type="System.Configuration.NameValueSectionHandler"/>
        <section name="Themes" type="System.Configuration.NameValueSectionHandler"/>
    </sectionGroup>
</configSections>
<SchedulerPage>
    <Themes>
        <add key="PI" value="PISchedulerForm"/>
        <add key="UB" value="UBSchedulerForm"/>
    </Themes>
</SchedulerPage>

Um den Zugriff Werte in der configSection, ich bin mit diesem Code:

    NameValueCollection themes = ConfigurationManager.GetSection("SchedulerPage/Themes") as NameValueCollection;
    String SchedulerTheme = themes["UB"];

appSettings Lösung

<appSettings>
    <add key="PITheme" value="PISchedulerForm"/>
    <add key="UBTheme" value="UBSchedulerForm"/>
</appSettings>

Um den Zugriff Werte in appSettings, ich diesen Code verwenden

    String SchedulerTheme = ConfigurationManager.AppSettings["UBSchedulerForm"].ToString();
War es hilfreich?

Lösung

Für komplexere Konfiguration Setup, würde ich eine benutzerdefinierte Konfiguration Abschnitt verwenden, die klar die Rollen der einzelnen Abschnitte zum Beispiel definiert

<appMonitoring enabled="true" smtpServer="xxx">
  <alertRecipients>
    <add name="me" email="me@me.com"/>
  </alertRecipient>
</appMonitoring>

In Ihrer Konfiguration Klasse Sie Ihre Eigenschaften mit so etwas wie

aussetzen kann
public class MonitoringConfig : ConfigurationSection
{
  [ConfigurationProperty("smtp", IsRequired = true)]
  public string Smtp
  {
    get { return this["smtp"] as string; }
  }
  public static MonitoringConfig GetConfig()
  {
    return ConfigurationManager.GetSection("appMonitoring") as MonitoringConfig
  }
}

Sie können dann auf den Konfigurationseigenschaften in der folgenden Art und Weise aus dem Code

string smtp = MonitoringConfig.GetConfig().Smtp;

Andere Tipps

Es wird keinen messbaren Unterschied in Bezug auf die Effizienz sein.

AppSettings ist groß, wenn alles, was Sie brauchen Name / Wert-Paare sind.

Für etwas komplexer, es lohnt sich eine benutzerdefinierte Konfiguration Abschnitt zu schaffen.

Für das Beispiel, das Sie erwähnen, würde ich appSettings verwenden.

Es wird kein Unterschied in der Leistung sein, da ConfigurationManager.AppSettings GetSection nur Anrufe ( "appSettings") sowieso. Wenn Sie benötigen, um alle Schlüssel aufzuzählen, dann wird ein benutzerdefinierter Abschnitt Schöneres, als all appSettings und die Suche nach etwas Präfix auf den Tasten aufgezählt, aber ansonsten ist es einfacher, appSettings zu bleiben, wenn Sie etwas komplexer als ein Namevaluecollection benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top