2009-03-27 11 views
2

J'ai un projet pour lequel nous étendons certaines fonctionnalités d'un client existant dans un portail Web dans ASP.NET 2.0. Le client est basé sur des formulaires Windows (dans .NET 2.0). Certains paramètres sont conservés dans le système Project> Properties> Settings.settings, y compris un fichier settings.Designer.cs généré. Ce fichier fournit de beaux wrappers automatiques pour chacun des paramètres.Quelle est la meilleure façon de gérer les paramètres (configuration) dans ASP.NET 2.0?

En essayant de mettre en place le site Web, j'ai été frustré par un manque apparent de parité pour cette fonctionnalité. J'ai un web.config, et il peut avoir une section. Cela signifie un accès via un code avec des chaînes, par exemple:

WebConfigurationManager.AppSettings["mySetting"]; 

Je peux même avoir les paramètres font référence à un autre fichier de cette façon, ce qui donne un peu l'abstraction, et plus facile check-in au contrôle de source:

<appSettings configSource="web.settings.config"/> 

mais, finalement, cela manque de certaines fonctionnalités du système de paramètres de projets client.

En particulier, je voudrais bien que ces caractéristiques si possible:

  • classe accesseur AutoGénéré (pour plus de commodité, IntelliSense ..)
    • pratique
    • fortement typées
    • Fournit IntelliSense
    • Le code ne compilera pas contre les fautes de frappe/erreurs dans les noms de paramètres
  • Interface facile
    • Les Settings.settings avant fourni une grille agréable
    • Toutes les options représentées
    • choix déroulant pour certaines options A montré
    • Ne pas modifier XML
    • Peut 't gros-doigt une cornière

Je sais qu'il serait possible de créer une classe qui les a enveloppés, mais elle ne resterait pas synchronisée avec les paramètres automatiquement, et devrait être modifiée manuellement à chaque modification. Cela fournirait cependant certains des éléments ci-dessus. Puis-je obtenir la parité avec les paramètres du projet comme nous le faisons chez notre client?

Quelle est la meilleure façon de gérer les paramètres d'un site Web ASP.NET 2.0?

Répondre

1

Vous devez utiliser une application Web, non Site Web et vous aurez accès aux paramètres de la même manière que les applications Windows

+0

Je ne suis pas certain que ce soit une option pour nous, ai-je pas de chance avec un site web? –

+0

Vous n'êtes pas totalement hors de la chance, mais pour un site Web, vous devez "manuellement" analyser les paramètres du fichier de configuration. – Albert

0

Par défaut, en utilisant la section appSettings dans votre web.config est la façon la plus simple de gérer votre paramètres d'application pour l'application Web. Vous pouvez convertir les valeurs dans les paramètres de l'application si nécessaire. Cependant, vous perdrez une forte frappe dans ce cas, ce qui vous semble être un gros problème.

Si vous devez conserver la saisie forte, accédez aux paramètres du projet (similaires à l'application WinForms) et définissez vos valeurs ici. Vous remarquerez que Settings.settings fichiers existe dans un dossier MyProjects, mais vous trouverez aussi le code suivant extrait de code au bas de votre fichier web.config (glissée d'un de mes applications):

<applicationSettings> 
    <EAF.My.MySettings> 
     <setting name="EAF_AS400EmployeeServices_EmployeeServices" serializeAs="String">           
     <value>http://countynetappsdev/AS400DataService/EmployeeServices.asmx</value> 
    </setting> 
</applicationSettings> 

Notez la propriété serializeAs dans cette section. Une fois que vous avez des choses dans cette section, vous pouvez accéder aux paramètres via la bibliothèque My.Settings en utilisant VB.NET. Cependant, puisque vous utilisez C#, vous avez besoin d'un peu plus de travail, mais une solution de code simple peut être trouvée here.

0

Je crée des classes qui enveloppent mon web.config pour fournir un accès fortement typé, intellisense amical aux paramètres.

De plus, les paramètres sont les plus susceptibles d'être modifiés dans le fichier XML par les types de support au moment de la mise en œuvre, de sorte que la grille dans VS ne fait aucune différence. Certes, ce n'est pas généré automatiquement, mais copier/coller est votre ami :)

Questions connexes