Puis-je Ajouter ConnectionStrings à la ConnectionStringCollection au moment de l'Exécution?
Est-il un moyen où je peux ajouter une chaîne de connexion à la ConnectionStringCollection retourné par le ConfigurationManager à l'exécution dans un Asp.Net application?
J'ai essayé ce qui suit, mais me dit que le fichier de configuration est en lecture seule.
ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings(params));
Est-il une autre façon de le faire au moment de l'exécution? Je sais qu'au moment de la conception, je peux ajouter une chaîne de connexion au web.config; cependant, je suis à la recherche d'ajouter un élément à la collection au moment de l'exécution.
Grâce
EDIT:
L'une des raisons pourquoi je suis tenté de faire, c'est en raison d'une exigence en matière de sécurité, qui m'empêche de placer ConnectionStrings dans le web.config (même cryptées). Je voudrais utiliser des éléments tels que l'Appartenance et Profils sur mon projet; cependant, je suis à la recherche dans une alternative pour faire de telles w/o la rédaction d'un fournisseur personnalisé. Fournisseur personnalisé ne sont pas si mauvais que ça, mais si je peux trouver une solution plus facile, je suis tout à fait pour.
- Vous pouvez déplacer les chaînes de connexion de web.config. Voir les Meilleures pratiques pour le déploiement de mots de passe et autres données sensibles à ASP.NET et d'Azur de Sites web asp.net/identity/overview/features-api/...
Vous devez vous connecter pour publier un commentaire.
Être Conseillé ce sera la cause de votre site web à recycler car il modifie le fichier de configuration. Découvrez http://msdn.microsoft.com/en-us/library/4c2kcht0(SV.80).aspx
Vous pouvez utiliser la réflexion pour désactiver le privé bReadOnly champ (mauvaise idée, etc.):
Ceci est similaire à la technique nécessaire pour modifier une connexion existante chaîne, et ajouté comme commentaire par Brian Rodgers.
Signalons simplement celui qui vous a donné la "sécurité" que vous ne pouvez pas placer la chaîne de connexion dans le web.la config est un idiot. Le web.config ne peut jamais être consulté par autre chose que votre application ou l'accès à distance au serveur.
Cela sonne tout à fait comme un problème et doit être résolu là.
Si vous essayez de modifier les chaînes de connexion dans votre site web.config lors de l'exécution de prendre un coup d'oeil à WebConfigurationManager.
Si vous essayez juste de modifier la configuration lors de l'exécution d'injecter une chaîne de connexion alors que vous êtes hors de la chance. Le ConfigurationManager objet de l'arbre est destiné à être un reflet direct de fichiers de configuration, si vous étiez en mesure de modifier que l'état serait alors incompatible.
Je recommande la création d'une simple façade de classe que vous pouvez utiliser pour récupérer vos chaînes de connexion. De cette façon, vous pourriez avoir la façade retourner une chaîne de connexion à partir de votre sur la mouche de la collection ou si l'un n'existe pas alors qu'il pourrait le saisir à partir de la ConfigurationManager.
Ou vous pouvez toujours aller un peu plus lourd et d'utiliser quelque chose comme l'Entreprise de Configuration de la Bibliothèque de Bloc.
N'avez pas encore essayé, mais peut-être vous pouvez modifier la valeur d'une chaîne de connexion existante au moment de l'exécution? Par exemple, au lieu de:
Peut-être que vous pourriez faire quelque chose comme:
Si oui, vous pouvez spécifier la chaîne de connexion "variables" dans la configuration, mais les mettre à false ou vide chaînes de connexion:
La configuration de l'infrastructure prend en charge très robuste de cryptage à travers les Fenêtres DataProtection API qui utilise une machine spécifique clé pour chiffrer les sections de configuration. De cette façon, il ne serait pas possible de lire les données chiffrées n'importe où, mais sur l'ordinateur où il a été chiffré.
C'est la même API qui est utilisé pour le Gouvernement conforme lecteur/cryptage de dossiers dans Windows. Serait-ce le stand up au succès de votre entreprise exigences en matière de sécurité?
Soit manuellement ou par le biais de votre automatisation du déploiement, vous pouvez exécuter cette commande pour chiffrer la section connectionStrings de votre site web.config pour une application web spécifique.
Si vous utilisez MS SQL, vous pouvez configurer votre serveur web pour accéder à SQL Server via l'authentification windows, de sorte que vous ne jamais avoir tous les mots de passe dans vos webconfig, ou même flottant autour dans votre mémoire de l'application.
Non, vous ne pouvez pas modifier le fichier de configuration au moment de l'exécution, il n'est pas prévu pour cela.
Vous pourriez peut-être utiliser les Bibliothèques d'Entreprise de Configuration à faire.
OpenWebConfiguration/Save
stackoverflow.com/a/719941/37055OpenWebConfiguration
, paradoxalement, je n'ai pas faites défiler vers le haut avant de les lier à une autre question. J'ai certainement d'accord avec vous que tout le monde ne devrait pas de le faire, mais ne peut pas est un absolu. Absolus sont presque toujours tort dans chaque situation, dans le logiciel... sauf s'il s'agit d'Oracle, mais je m'égare