2010-05-25 9 views
18

Ich habe eine DLL, die Protokollierung bereitstellt, die ich für WebForms-Projekte verwende und jetzt in einem ASP.Net MVC 2-Projekt verwenden möchte.applicationSettings und Web.config

Einige Aspekte dieser DLL sind in app.config konfiguriert:

<configuration> 
    <configSections> 
      <section name="Tools.Instrumentation.Properties.Settings" 
        type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
        requirePermission="false" /> 
     </sectionGroup> 
    </configSections> 

<applicationSettings> 
     <Tools.Instrumentation.Properties.Settings> 
      <setting name="LogLevel" serializeAs="String"> 
       <value>DEBUG</value> 
      </setting> 
      <setting name="AppName" serializeAs="String"> 
       <value>MyApp</value> 
      </setting> 
      <setting name="Port" serializeAs="String"> 
       <!--value>33333</value--> 
       <value>0</value> 
      </setting> 
     </Tools.Instrumentation.Properties.Settings> 
    </configuration>  

Allerdings, wenn ich einen ähnlichen Eintrag in Web.config erstellen, ich den Fehler:

Unrecognized configuration section applicationSettings

Mein zweiteilige Frage:

  • Wie kann ich diesen Konfigurationseintrag in Web.config arbeiten lassen?
  • Wo kann ich die konzeptionellen Unterschiede zwischen WinForms-Konfiguration und ASP.Net-Konfiguration nachlesen?

Antwort

48

Ihre Konfigurationsdatei fehlte nur die application Abschnitt Gruppe:

<configSections> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
     <section name="Tools.Instrumentation.Properties.Settings" 
       type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
       requirePermission="false" /> 
    </sectionGroup> 
</configSections> 

Wenn Sie hinzufügen, dass, können Sie Ihre Einstellungen Abschnitt innerhalb des Tags setzen und Ihre Montage von ihm als normal lesen sollte.

+6

Ich habe eine Ahnung, dass dies eine bessere Antwort ist. –

+0

In der Tat ist es. Akzeptiert es. –

+1

Falls jemand anderes verwirrt ist, kann die 'sectionGroup' direkt von der' * .dll.config' Datei in den 'web.config' Datei' configSections' Bereich kopiert werden. Danach kann der Abschnitt 'applicationSettings' genauso kopiert werden. – cjbarth

3

Beachten Sie die name Attribut des Abschnitts?

versuchen Sie Ihr Element aus der

<Tools.Instrumentation.Properties.Settings> 
     <setting name="LogLevel" serializeAs="String"> 
      <value>DEBUG</value> 
     </setting> 
     <setting name="AppName" serializeAs="String"> 
      <value>MyApp</value> 
     </setting> 
     <setting name="Port" serializeAs="String"> 
      <!--value>33333</value--> 
      <value>0</value> 
     </setting> 
    </Tools.Instrumentation.Properties.Settings> 
<applicationSettings> Wrapper Entfernen

Nun können Sie den Abschnitt. Aber Sie haben nicht die generierte Wrapper-Klasse, die Sie brauchen, um ein wenig mehr Arbeit zu tun, um Ihre Werte mit ConfigurationManager zu erhalten.

Was den zweiten Teil Ihrer Frage betrifft, gibt es aus einer Perspektive wenig oder keinen Unterschied in der Art, wie Konfigurationsdateien von einer Webanwendung im Vergleich zu einer Formularanwendung behandelt werden. Der einzige wichtige Unterschied, der hier relevant sein kann oder nicht, ist die Art und Weise, in der web.config-Dateien hierarchisch zugeordnet werden können, wobei jede nachfolgende Datei die übergeordnete Konfiguration effektiv erweitert oder modifiziert, wenn sie erlaubt ist. Aber das ist meiner Meinung nach eher ein Verhaltensunterschied als ein funktioneller Unterschied.

4

Hier ist die .NET-4-Version der fehlenden Konfiguration:

<configSections> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
     <section name="Tools.Instrumentation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </sectionGroup> 
</configSections> 

Stellen Sie sicher, den Namensraum des <section> ‚s name Attributwert aktualisieren Sie Ihren eigenen übereinstimmen.

Verwandte Themen