2009-05-14 13 views
2

Ich habe eine ASP.Net App, in der mein AppSettings-Knoten aus der Web.Config XML in einer separaten Datei gespeichert ist.Ist IIsreset immer notwendig, wenn ich meine Web.Config-Appsettings in einer separaten Datei abspeichere?

So enthält meine Web.Config dies:.

<appSettings file="AppSettings.config" /> 

Jedes Mal, wenn ich eine Einstellung in dort ändere Ich habe ein iisreset zu tun, um die Änderungen zu zwingen, treten mit anderen Worten, meine Änderungen in dieser Datei aren Ich habe den gleichen Weg gefunden, wie Änderungen an der Web.Config sind.

Kann jemand wissen, wie ich diese Änderungen automatisch wirksam werden lassen kann, wie es mit der Web.Config tut?

Danke!

Antwort

3

Bearbeiten: Als Antwort auf andere Antworten. Sie können die Datei machine.config so ändern, dass sie die Option restartOnExternalChanges = "true" für appSettings enthält. Dies führt jedoch dazu, dass ALLE Ihre Webanwendungen neu gestartet werden, wenn Sie eine der externen App-Einstellungsdateien berühren. (Ich glaube, das funktioniert möglicherweise nur, wenn Sie configSource = "file.name" nicht file = "file.name" verwenden.)

Dies ist per Entwurf und die einzige Möglichkeit, das Zurücksetzen der Anwendung zu verursachen, ist manuell oder über ein Skript.

Sie können einen Blick hier für einen Skript nehmen, die Ihre Anwendung ohne Neustart iis zurückgesetzt werden:

http://weblogs.asp.net/jgalloway/archive/2006/06/01/Avoid-IISRESET-in-ASP.NET-applications-_2800_added-bonus_3A00_-ASPRESET_2900_.aspx

+0

Sie können dies auch über Code einstellen, also denke ich, dass das nur die aktuelle Anwendung betreffen würde: http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.restartonexternalchanges.aspx –

+0

@jellomonkey. Danke für die Hilfe, Kumpel. Die machine.config Änderung hat funktioniert. Ich sollte darauf hinweisen, dass es nicht mit file = "file.name" funktioniert hat, so dass es so aussieht als wäre es notwendig configSource = "file.name" zu verwenden. Danke nochmal! –

2

Öffnen Sie web.config im Editor. Speichere es. Notizblock verlassen

+0

+1: die einfachsten Lösungen sind in der Regel die besten. – Joe

+0

Danke für die Eingabe - obwohl ich irgendwo nach einer Einstellung gesucht habe :) –

+0

@Downvoter: kümmern sich um die Abstimmung zu erklären, oder bist du nur ein Feigling? –

1

Sie können einen filewatcher Dienst schreiben, um Ihre benutzerdefinierte Konfigurationsdatei zu überwachen. Geben Sie den Befehl iisrest aus, wenn das geänderte Ereignis im Service ausgeführt wird.

2

Wie Sie Ihre App-Einstellungen im Code zugreifen, werden? Ich habe eine externe Appsettings-Datei (obwohl ich die configSource Eigenschaft anstelle von file verwenden) und alle Änderungen, die ich mache, sind sofort verfügbar, wenn ConfigurationManager.AppSettings("settingname") im Code verwendet wird, um den Wert zu erhalten.

Mit diesem gesagt, wenn Sie wirklich einen Neustart der App aus einem anderen Grund benötigen, und Sie haben Zugriff auf die Datei machine.config auf dem Server, in der Definition für die appSettings Abschnitt gibt es ein Attribut mit dem Namen RestartOnExternalChanges kann auf true gesetzt werden (standardmäßig auf false) und dann wird sich der appSettings-Bereich wie gewünscht verhalten, glaube ich.

+0

Ich sehe nicht, wo er sagte, dass er die Änderungen im Code vornahm. –

+0

Ich habe nicht gesagt, Änderungen zu machen - ich sagte ZUGANG zu den Werten durch Code. Die meisten von uns legen Dinge in appSettings, weil wir den Wert in unserem Code verwenden möchten. Wenn ich die obige Methode zum Abrufen des Werts verwende, werden alle Änderungen, die ich an den externen Appsettings vorgenommen habe, ohne Neustart der App angezeigt. – patmortech

+0

Sofort verfügbar ohne Neustart einer ASP.NET-Anwendung? Ich glaube nicht, dass das möglich ist. Ich dachte, dass AppSettings per AppDomain zwischengespeichert wurde, so dass es notwendig wäre, einen ASP.NET Application Neustart durchzuführen, um eine neue AppDomain mit den neuen Einstellungen zu erhalten. –

0

Wenn Sie stattdessen ConfigurationRedirection (eingeführt mit IIS 7) verwenden, können Sie IIS so konfigurieren, dass Änderungen an Ihrer externen Konfigurationsdatei abgefragt werden (beginnend mit IIS 7.5). Dies würde jedoch die gesamte .config-Datei abdecken, nicht nur den Abschnitt appSettings.

Hiermit können Sie Konfigurationseinstellungen auf einem UNC-Server speichern, auf den alle Webservercomputer in der Webfarm zugreifen können.

2

Ich weiß, das ist ein alter Thread, aber etwas hinzuzufügen.

Wenn Sie:

<appSettings file="AppSettings.config" /> 

wechselt dann auf die externe Datei nicht verfügbar sein wird, bis eine Änderung an web.config vorgenommen wird oder ein Neustart durchgeführt wird.

Aber wenn Sie ändern, dass auf:

<appSettings configSource="AppSettings.config" /> 

Die Änderungen an diesen Einstellungen in Ihrem Code sind ab sofort ohne Neustart oder eine web.config ändern.

Ich habe gerade verifiziert, dass dies bei einem wiederholbaren Test der Fall ist.