Bonjour,
Dans une solution VS2005 contenant un siteweb et un DataSet dans un projet C#, je souhaiterais que la ConnectionString de mon DataSet utilise celle définie dans le web.config de mon siteweb ? :roll:
Merci pour votre aide ;)
Stéphane
Version imprimable
Bonjour,
Dans une solution VS2005 contenant un siteweb et un DataSet dans un projet C#, je souhaiterais que la ConnectionString de mon DataSet utilise celle définie dans le web.config de mon siteweb ? :roll:
Merci pour votre aide ;)
Stéphane
Tu ne peux pas faire appel aux Settings car ce n'est pas le même projet donc je pense que tu va devoir lire le fichier Web.config "à la main"
Qu'appelles-tu un "projet C#"?Citation:
Envoyé par stephane.net
Merci pour vos réponse :)
Ditch,
Avec VS2005 "A project for creating a C# class library (.dll)"
En poursuivant mes recherches, j'ai lu qu'en général, la ConnectionString définie en dur dans le fichier Settings.Designer.cs était celle utilisé pour le développement mais qu'ensuite il était possible "à l'exécution" de la redéfinir à partir du web.config ou bien de n'importe quel fichier de configuration. Sauf que ConnectionString est une propriété ReadOnly :aie:
Je cherche une manière très simple de faire (je débute :P )
Merci pour tout aide sur ce sujet.
Reprenons:
Tu as une solution VS 2005 avec 2 projets:
- 1 site Web avec son fichier Web.config.
- 1 projet de type Class library dans lequel tu as ton Dataset
Tu voudrais, depuis le DataSet, utiliser la ConnectionString définit dans le web.config, c'est bien cela ?
Si oui, il faut que Ditch nous explique comment faire car à ma connaissance, cela n'est pas possible de le faire en utilisant les Properties: en effet, celles-ci étant liées à un projet, on ne peut pas, depuis un projet "externe" avoir accès au Properties d'un projet.
Mais s'il y a une solution (autre que le parsing du fichier XML), cela m'intéresse fortement aussi :P
Une librairie de classe, ca fait partie d'un projet. Tu imagines si tu dois avoir 1 fichier de config par dll? On ne s'en sortirait pas...
Je peux poster un exemple ce soir... Mais ca fonctionne vraiment tout seul :aie:
Oui, bien sur mais lui, il a également un site Web donc un projet différentCitation:
Envoyé par Ditch
Je suis pas sur qu'on se comprenne donc oui, je veux bien ton exempel ce soir :P
oui c'est très exactement ce que je souhaite faire :D
(et même je peux compliquer un peu puisque mes connectionsString seront cryptés dans le web.config..8-) .)
Entre temps j'ai trouvé quelques infos :
Channel 9 Forums : Connection String for Typed Datasets
- la propriété Connection du TableAdapter peut être Public et donc à chaque utilisation du tableadapter il faut penser à setter la connectionString avec la valeur du web.config- Modifier le fichier Settings.Designer.cs, ajouter un Set{} à la propriété MaconnectionString utilisé dans le global.asa
quoi d'autre...?:roll:
Ca me parait VRAIMENT bizarre vos trucs. J'peux te jurer que je prends mon applic, je te la file avec la base, tu changes le web.config et mes 4 DataSets qui sont dans des class librairy fonctionnent ;)
Celle bazar.designer.cs c'est pour vs en gros, c'est pas utile ailleurs. Heureusement, t'imagines la galère.
Tu as dit que tu ne pouvais pas lire le fichier config d'un autre projet. Je suis d'accord là dessus sauf qu'ici sa class librairy, il y a une référence dessus depuis le projet web. Du coup elle fait partie de l'applic et peut lire le fichier de config.
Ditch,
A quelle moment tu définis les ConnectionString de tes Dataset ?
Un exemple. J'ai deux projets. Un web et un avec une class à la noix.
Cette classe lit le fichier web.config. Si il est référencé dans une applic Windows, ce sera le app.config
Merci Ditch :D
Mais la propriété ConnectionString du Settings est en ReadOnly... donc tu ne peux pas la setter de cette manière là... :mouarf:
Par contre je viens de découvrir quelque chose :lol: :
après avoir lu l'article ci-dessous :
Ian Blackburn's Weblog : Connection Strings and Typed DataSets - explanations (and security notes)
j'ai remarqué que dans le fichier app.config de mon projet de Class la propriété name de ta ConnectionString n'est pas le nom que tu lui as donné dans le wizard tu TableAdapter... mais un nom du style "Namespace.connectionstringName".
Alors que dans mon web.config du site web la propriété name de ma connectionString était "connectionstringName" et non "Namespace.connectionstringName"...
Alors en rajoutant une ConnectionString contenant une propriété Name identique à celle déclarée dans l'app.config de mon projet de DataSet j'ai pu constaté que le DataSet utilisait bien la Cs du web.config :mrgreen:
Parcontre, j'ai plusieurs projets de Class contenant des Dataset et chacun à son propre Namespace... et chacun doivent utiliser la même connectionString. J'en déduis donc que dans mon web.config je dois avoir autant de ConnectionString que de Namespace...
:aie:
Et ca marche un truc comme ca ? Vraiment étonnant mais bon, si tu le dis, j'aurais appris quelque chose.... :)
Non non, pas si tu fais comme je viens de te le montrer.Citation:
Envoyé par stephane.net
J'ai des applications modulaires. Je ne peux en aucun cas toucher au moteur de l'application mais je rajoute des fonctionnalités. Très bien, je la développe mais c'est à la fonctionnalité à prendre les infos qu'il lui faut. D'ailleurs qu'est-ce qu'il lui faut? Si tu es seul à développer tu le sais. Si vous êtes 10, bon amusement pour celui qui est en centre :aie:
Ce que je t'ai montré fonctionne non? Tu lis la chaine de connexion quand tu remplis ton dataset et c'est réglé, tu auras changer ta connectionstring à la volée et tu n'as qu'un seul fichier de config.
Non non, j'ai du code planqué quelque part dans l'applic qui fait semblant :aie: A toi de le trouver :aie: Voilà, au moins ca aura servi ceci :)Citation:
Envoyé par Thomas Lebrun
Je ferai peut être un "petit papier" à ce sujet.
Ditch,
J'ai rajouté un dataset à ton autre projet :
ça a automatiquement rajouté un un fichier app.config et définit une propriété dans settings de type ConnectionString que j'ai pu appeller pendant le wizard du tableadapter : cs
tu verras que le cs définit dans "autre projet" et le cs définit dans le web.config n'ont pas le même nom 8O
Deplus, la propriété ConnectionString de "Autre projet" est en readonly, tu ne peux pas la setter.
Stéphane
Pas sur de ton comprendre à ce que tu veux faire mais dans le fichier Dataset2.Designer.cs, remplace cette ligne:
this._connection.ConnectionString = global::AutreProjet.Properties.Settings.Default.cs;
par cette ligne:
this._connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["cs"].ConnectionString;
Settings.Designer.cs est un fichier "auto-géné", je ne peux rien remplacer dedans ...?
pardon je voulais dire DataSet2.Designer.cs :aie: