Récemment, j'ai découvert que le fichier "web.config" contient une section
9 Réponses :
Il est destiné aux paramètres d'application, mais pas à des paramètres destinés à être modifiés de manière dynamique pendant l'exécution. Au lieu de cela, c'est pour les paramètres qui ne changent que de temps en temps et où vous vous attendez (et même désirez) une application redémarrante lorsqu'elles changent. P>
Pour plus de paramètres éphémères, vous pouvez simplement utiliser un système de base de données simple - même un fichier plat / xml dans le app_data code> Dir peut fonctionner, si votre application n'utilise pas une base de données sinon. p>
web.config est généralement utilisé pour les paramètres en lecture seule, c'est-à-dire. Les paramètres définis lors du déploiement de l'application par l'administrateur système. P>
Si vous souhaitez lire et em> écrire les paramètres, la manière la plus évidente est d'utiliser la base de données. Au fait, cela a un avantage: une application peut être hébergée sur plusieurs serveurs et lira et écrivez correctement les paramètres correctement, P>
Vous pouvez également implémenter votre stockage personnalisé pour les paramètres, mais il sera probablement plus difficile à mettre en œuvre et pas beaucoup plus vite. P>
Pour répondre à votre deuxième question, la structure de votre base de données dépend du type de paramètres que vous souhaitez stocker. P>
Si vous avez besoin de Stocker des entrées uniques hétérogènes forte> comme ceci: p>
Ensuite, vous devez utiliser D'autre part, si votre objectif est de Stocker les adresses de messagerie de plusieurs gestionnaires forts>, vous devez créer une table code> code> contenant leurs adresses postales, noms, DateTime de leur dernière connexion, etc. p>
varchar code> S ou d'autres types plus ou moins amicaux comme des clés pour identifier les entrées (plutôt que de les faire référence à leur index). P>
Intéressant, je n'avais pas envisagé une application éventuellement en cours d'exécution sur plusieurs serveurs, mais cela a du sens. Dans mon cas, cela ne se produira probablement jamais parce que c'est pour un projet d'entreprise interne, mais c'est bon de garder à l'esprit.
Intéressant. Je cherchais juste comment stocker une valeur Single i> car il se sentait faux de reposer une table de base de données qui ne contiendrait jamais un enregistrement, un entier. Mais vous dites que le "web.config est généralement utilisé pour des paramètres en lecture seule" donne un sens aussi. À la suite de votre réponse (excellente), je suis confus quant à l'endroit où le meilleur endroit pour stocker une application large entier / écrire entier dans un service Web est.
Oui.changing Le web.config réinitialisera l'application.Je maintenez généralement une table de paramètres pour stocker des paires de la valeur de clé pour les paramètres et l'accéder à partir de là.
SETTING_NAME SETTING_VALUE AdminEmail admin@mysite.com ErrorTrackingEmail errors@mysite.com
nom code> devrait être la clé primaire. Les colonnes séparées n'ont aucun sens
Créer une table à valeurs de clé comme ceci:
settings: name NVARCHAR(255) PRIMARY KEY value NVARCHAR(255) NOT NULL
Stockage des paramètres dans web.config est utile car il facilite les paramètres différents dans différents environnements. Cependant, comme vous le dites, ce n'est pas une utilisation si vous souhaitez modifier les paramètres dans un environnement direct.
Une table de base de données simple est le moyen le plus utile de le faire si vous devez modifier les valeurs. p>
EG. P>
create table Settings (Name varchar(50) primary key, Value varchar(50))
+1 pour sql_variant code>.
NVARCHAR (MAX) CODE> n'est pas une bonne idée lors de la conservation des données de n'importe quel type (non de mentionner
varchar (100) code>).
Tout d'abord, ce n'est pas du tout déraisonnable lorsque vous déterminez quelles informations sont censées être stockées dans le fichier web.config. Lorsque vous modifiez des informations telles que les informations de montage, les chaînes de connexion, etc., votre application doit arrêter et recharger les valeurs à exécuter avec ces paramètres. P>
Si vous stockez des paramètres d'application large, vous pouvez créer une table des paramètres de votre base de données ou même utiliser un fichier texte distinct pour stocker les paramètres. P>
Si vous parlez de stocker des paramètres par utilisateur, vous recherchez Propriétés du profil ASP.NET . P>
Par "déraisonnable", je voulais dire que le "redémarrage" constant de la demande était un effet secondaire qui aurait des problèmes de performance que je ne pourrais pas tolérer. (Pas que la raison du redémarrage du redémarrage était déraisonnable ...) - Merci d'avoir souligné les propriétés du profil ASP.NET. Ce n'est pas exactement ce que je cherche, mais je pense que cela m'aidera avec un autre problème que j'ai ... :-)
Les paramètres à l'échelle de l'application doivent certainement être stockés dans cette section du fichier web.config, car elle empêche les valeurs de codage rigide qui peuvent changer dans le temps. Il n'est pas nécessaire de les lire à l'aide de votre propre code, car il y a une méthode intégrée: utilisez le tableau Pour les valeurs que vous envisagez de changer plus souvent et que le site est opérationnel, il est raisonnable d'utiliser un fichier XML, une base de données léger (telle que SQLite ou SQL Server compact), soit même un fichier texte pour ces paramètres. p> System.Configuration.ConfigurationManager.AppSettings code> pour les récupérer (vous devez ajouter une référence à l'ensemble System.Configuration dans votre projet). Vous pouvez modifier également Appsettings via l'outil Administration de site Web ASP.NET, également (Menu Project -> Asp.net Configuration). P>
J'ajoute habituellement un champ "type" à mon tableau de paramètres de sorte que je ne récupère que le groupe de paramètres requis Cela fonctionne pour moi comme moyen de regrouper des paramètres et de les récupérer à la fois. P>
Dans quel scénario auriez-vous besoin d'obtenir un groupe de paramètres? Est-ce pour des raisons de performance principalement?
Certains paramètres sont regroupés tels que DirectoryPath, si je cherche un département de répertoire, je ne peux que tirer tous les paramètres où Type = DirectoryPath, puis simplement les utiliser.
Si vous devez enregistrer les paramètres, vous pouvez toujours les enregistrer dans un fichier de configuration personnalisé. p>
J'ai fait juste qu'un moment de retour, et j'ai le code disponible pour le faire ici . P>
L'utilisation de DB pour stocker les paramètres d'applications est OK mais veuillez stocker les paramètres dans le cache. Les paramètres de la configuration Web sont rapides à lire car ils sont dans la mémoire du serveur. Si vous lisez constamment les paramètres de la page à EvTy, envisagez d'ajouter de la mise en cache à vos paramètres et de les supprimer également du cache lorsque les SETTIN sont mis à jour.
Après votre édition, j'ai édité ma réponse. Notez que lorsque vous avez deux questions, demandez-leur séparément, au lieu d'ajouter la deuxième question à la précédente.