Anwendungseinstellungen außerhalb von web.config

7

Ich muss den Abschnitt mit den Einstellungen für die Produktions-App außerhalb von Web.config belassen. Ich möchte nicht, dass Schlüssel und andere geheime Informationen im Quellcode-Repository aufbewahrt werden. Wenn ich jedoch die App-Einstellungen mit IIS Mananger bearbeite, ändert sich die Web.config, die bei der nächsten Bereitstellung überschrieben wird.

Wie kann ich diese Einstellungen außerhalb der Web.config behalten, die mit der Anwendung bei der Bereitstellung geliefert wird? Dies wird beispielsweise von Azure-Websites ausgeführt - die im Portal konfigurierten App-Einstellungen werden nicht in Web.config gespeichert -, die durch Herunterladen der Datei über FTP bestätigt werden kann. Wie wird es gemacht?

Mircea Chirea
quelle

Antworten:

5

Für die Knoten appSettings und connectionStrings in web.config können Sie diese in separate Dateien außerhalb von web.config verschieben.

In Ihrer web.config hätten Sie:

<appSettings configSource="appsettings.config"></appSettings>

und dann eine neue Datei appsettings.config:

 <?xml version="1.0"?>
 <appSettings>
     <add key="foo" value="bar" /> 
 </appSettings>

Dann müssen Sie sicherstellen, dass Sie diese neuen Dateien nicht bereitstellen und sie auf dem Produktionsserver und in Ihrer Entwicklungsumgebung unterschiedlich halten.

Alle meine web.config-Dateien sind von meinem Bereitstellungsprozess ausgeschlossen. Wenn ich sie ändern muss, mache ich das auf der Bühne oder auf Produktionsstandorten.

Peter Hahndorf
quelle
0

Zusätzlich zu den web.config-Dateien auf Ihren Websites gibt es mehrere globale Einstellungen für IIS.

%systemroot%\System32\inetsrv\config\applicationHost.config

verfügt über alle globalen IIS-Einstellungen. Abhängig von Ihren Feature DelegationEinstellungen können diese in Ihren lokalen web.config (s) überschrieben werden. Sie können dies jedoch verhindern, indem Sie in der Feature-Delegierung auf Serverebene eine Funktion auf "Schreibgeschützt" setzen.

Für dot.NET-bezogene Einstellungen gibt es zwei globale Dateien:

%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\machine.config
%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\web.config

Es gibt mehrere Versionen dieser Dateien, eine für jede Framework-Version für jede Betriebssystemplattform.

Alle in diesen Dateien vorgenommenen Einstellungen werden von Ihrer lokalen web.config übernommen.

Ich glaube jedoch nicht, dass es eine Möglichkeit gibt, zu verhindern, dass eine lokale web.config die in den globalen Dateien festgelegten Einstellungen überschreibt.

Peter Hahndorf
quelle
1
Diese werden an allen Standorten in IIS global sein. Was ich brauche, ist eine Möglichkeit, Einstellungen pro Site zu speichern, ohne dass sie bei der erneuten Bereitstellung überschrieben werden.
Mircea Chirea