2008-10-24 8 views
6

J'ai reçu une erreur lors d'un assemblage .NET Framework 2.0 référencé a essayé d'exécuter la ligne de code suivante dans un service hébergé IIS WCF:WCF et espace de noms System.Configuration

Message d'erreur:

ExePath doit être spécifié quand il n'est pas fonctionnant à l'intérieur d'un exe autonome.

Code Source:

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

Quelqu'un at-il rencontré ce problème et savent-ils comment le résoudre? Ma question est, quelle est la meilleure façon d'ouvrir un fichier de configuration (app.config et web.config) à partir d'un service WCF qui est rétrocompatible avec un assembly .NET 2.0?

Répondre

3

j'ai pu résoudre le problème de configuration en supprimant le code existant de ma provious réponse et en le remplaçant par le suivant la mise en œuvre ConfigurationManager:

string MySetting = ConfigurationManager.AppSettings.Get("MyAppSetting"); 

Si les travaux pour les applications ASP.NET, les applications WinForms et services WCF. J'ai juste sur-machiné l'implémentation initiale de ma bibliothèque de classes il y a 3 ans ....

1

Cela dépend de ce que vous essayez d'accomplir. Sur ASP.NET, vous n'utilisez normalement pas ConfigurationManager pour ce genre de choses, mais WebConfigurationManager à la place. Cela dit, il n'y a pas d'équivalent exact, puisque, en réalité, les trucs user/roaming/etc autorisés par OpenExeConfiguration n'ont pas de sens sur une application web.

Pourquoi en avez-vous besoin?

5

L'assembly .NET 2.0 référencé fait partie d'une bibliothèque de classes que j'ai développée pour notre bibliothèque d'entreprise afin de gérer les tâches courantes. Il était destiné à être utilisé dans les applications ASP.NET et WinForm.

Voici le code source je pour déterminer quel type de fichier de configuration pour ouvrir:

//Open app.config or web.config file 
if (HttpContext.Current != null) 
    this.m_ConfigFile = WebConfigurationManager.OpenWebConfiguration("~"); 
else 
    this.m_ConfigFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
Questions connexes