36 Stimmen

configSource funktioniert nicht in system.serviceModel *oder* seinen Unterabschnitten

Ich versuche, eine app.config-Datei in mehrere Dateien aufzuteilen, um die Verwaltung der für verschiedene Umgebungen erforderlichen Unterschiede zu erleichtern. Bei einigen Abschnitten war es einfach...

<system.diagnostics>
    various stuff
</system.diagnostics>

wurde

<system.diagnostics configSource="ConfigFiles\system.diagnostics.dev" />

wobei die "verschiedenen Dinge" in die Datei system.diagnostics.dev verschoben wurden.

Aber für die system.serviceModel Abschnitt scheint dies nicht zu funktionieren.

Jetzt habe ich Hinweise gelesen, dass es nicht funktioniert für system.serviceModel selbst, aber es funktioniert für die Abschnitte darunter: bindings , client , diagnostics , usw. Aber das Gleiche passiert mir, wenn ich versuche, configSource mit einem von ihnen zu verwenden. Wenn ich Folgendes eingebe

<system.serviceModel>
  <bindings configSource="ConfigFiles\whateverFile.dev" />

Ich verstehe:

Das Attribut 'configSource' ist nicht deklariert.

Hat das noch jemand gesehen? Kennen Sie eine Lösung? (Vielleicht habe ich ein veraltetes Schema oder so?)

71voto

Martin Peck Punkte 11292

Der VS.NET-Editor stöhnt über die Konfiguration, aber es funktioniert.

Ich habe eine Konfiguration wie diese...

<system.serviceModel>
  <behaviors configSource="config\system.servicemodel.behaviors.config" />
  <bindings configSource="config\system.servicemodel.bindings.config" />
  <client configSource="config\system.servicemodel.client.config" />
</system.serviceModel>

... was gut funktioniert.

24voto

marc_s Punkte 701497

Sie wird NICHT Arbeit an <system.serviceModel> da es sich um eine Konfigurations-SectionGroup und nicht um eine Konfigurations-Section handelt.

Es WILL funktionieren zur Laufzeit problemlos auf allem unter <system.serviceModel> - Wir machen das ständig. Martins Antwort zeigt es sehr schön - sein Beispiel wird funktionieren.

8voto

Chris Punkte 71

Eine Sache, die Sie beachten sollten, wenn Sie Ihre Konfigurationsabschnitte in separate Dateien verschieben: Stellen Sie sicher, dass Ihre separate Konfigurationsdatei KEIN configSource-Attribut enthält. Wenn Sie zum Beispiel Ihren Bindings-Abschnitt wie folgt aufteilen,

<system.serviceModel>
    <bindings configSource="yourConfigFile.config" />
</system.serviceModel>

Vergewissern Sie sich, dass Ihre aktuelle Bindungsdatei nicht das Attribut "configSource" enthält:

<?xml version="1.0" encoding="utf-8"?>
<bindings>
    <!-- binding configuration stuff -->
</bindings>

Ich weiß, das mag offensichtlich erscheinen, aber wenn man das Attribut configSource eingibt und dann ausschneidet und in eine neue Datei einfügt, vergisst man leicht, das Attribut wieder herauszunehmen.

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X