WCF und System.Configuration Namespace
-
04-07-2019 - |
Frage
erhielt ich einen Fehler, wenn eine referenzierte .NET Framework 2.0 Anordnung, die die folgende Codezeile in einem IIS-gehosteten WCF-Dienst auszuführen versucht:
Fehlermeldung:
ExePath muss angegeben werden, wenn sie nicht läuft in einem Stand-alone-exe.
Source Code:
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Hat jemand dieses Problem erfahren und wissen sie, wie es zu lösen?
EDIT: Meine Frage ist, was ist der beste Weg, um eine Konfigurationsdatei (app.config und web.config) zu öffnen, von einem WCF-Dienst, der rückwärts mit .NET 2.0 Montage kompatibel ist?
Lösung 2
Ich konnte das Konfigurationsproblem lösen, indem Sie den vorhandenen Code aus meiner provious Antwort zu entfernen und durch die folgenden Konfigurationsmanager Implementierung zu ersetzen:
string MySetting = ConfigurationManager.AppSettings.Get("MyAppSetting");
Wenn Arbeiten für ASP.NET-Anwendungen, WinForms-Anwendungen und WCF-Dienste. Ich habe gerade overengineered die anfängliche Umsetzung meiner Klassenbibliothek vor 3 Jahren ....
Andere Tipps
Die referenzierte .NET 2.0 Montage ist Teil einer Klassenbibliothek ich für unser Unternehmen Bibliothek entwickelt, um gemeinsam taskes zu behandeln. Es war beabsichtigt, in ASP.NET und Windows Forms-Anwendungen verwendet werden.
Hier ist die Quellcode ich verwenden, um zu bestimmen, welche Art von Konfigurationsdatei zu öffnen:
//Open app.config or web.config file
if (HttpContext.Current != null)
this.m_ConfigFile = WebConfigurationManager.OpenWebConfiguration("~");
else
this.m_ConfigFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Es hängt davon ab, was Sie erreichen wollen. Auf ASP.NET, würden Sie normalerweise nicht Configuration für Sachen wie diese, aber WebConfigurationManager statt. Das heißt, es gibt keine genaue Entsprechung, da in Wirklichkeit der Benutzer / Roaming / etc Sachen, die OpenExeConfiguration erlaubt keinen Sinn auf eine Web-Anwendung machen.
Was brauchen Sie es?