IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Changer la chaine de connexion WCF depuis une application WPF (c#)


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut Changer la chaine de connexion WCF depuis une application WPF (c#)
    Bonjour tout le monde,
    Tout est dans le titre, je souhaite modifier la chaîne de connexion de mon WCF depuis WPF afin de rendre cette dernière multibase mais je ne sais pas comment faire. J'ai cherché partout sur le net et je n'ai pas trouvé, j'ai même essayé à le faire depuis une application Silverlight il y a un moment mais sans succès. Soit la question est tellement évidente que personne ne la pose, soit c'est moi qui ne sait pas bien chercher.
    Voila ce que j'ai fait:
    - J'ai créé une application WPF
    - J'ai ajouté une application WCF
    - J'ai créer mon Model edmx à partir d'une base x et mon domainservice.

    Ce que je veux faire, c'est de laisser à l'utilisateur final de saisir les paramaitre de la chaîne de connexion depuis UI à savoir : le nom du serveur, le login, le mot de passe et le nom de la base.

    SVP ce problème m'a totalement bloqué.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Comme je le comprend il te faut simplement faire les choses suivantes:
    -Ajouter une méthode dans ton service WCF qui permettra de changer la chaine de connexion. Cette méthode prendra par exemple un paramètre de type string avec ta chaine de connexion (tu feras une vérification de validité de ta chaine de connexion)
    -Cette méthode ira simplement modifier la chaine de connexion là où tu la stockes (web.config ?)
    -Côté client WPF, tu n'auras qu'à appeler ta méthode de service WCF en fournissant le paramètre.

    J'imagine que ton utilisateur ne va pas taper une chaine de connexion tel que l'attend Entity Framework donc il faudra certainement que tu construises toi même cette chaine de connexion dans le code.

    Je sais pas si cela pourra t'aider, dans ce cas, hésite pas à donner plus d'infos

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Citation Envoyé par marcusien Voir le message
    Comme je le comprend il te faut simplement faire les choses suivantes:
    -Ajouter une méthode dans ton service WCF qui permettra de changer la chaine de connexion. Cette méthode prendra par exemple un paramètre de type string avec ta chaine de connexion (tu feras une vérification de validité de ta chaine de connexion)
    -Cette méthode ira simplement modifier la chaine de connexion là où tu la stockes (web.config ?)
    -Côté client WPF, tu n'auras qu'à appeler ta méthode de service WCF en fournissant le paramètre.

    J'imagine que ton utilisateur ne va pas taper une chaine de connexion tel que l'attend Entity Framework donc il faudra certainement que tu construises toi même cette chaine de connexion dans le code.

    Je sais pas si cela pourra t'aider, dans ce cas, hésite pas à donner plus d'infos
    Merci pour ton aide.

    Où est ce que je dois ajouter cette méthode, dans mon domaine service ou je dois créer une classe? parle-tu de cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    protected override MyObjectContext CreateDataSource()
    {
         MyObjectContext dataContext = new MyObjectContext(connectionString);
         return dataContext;
    }
    Comment je peux l'appeler depuis l'application client en lui passant mon objet "chaine de connexion" et est ce que je dois modifier quelque chose dans le web.config où je dois rien toucher.

    Désolé si je confonds des choses et merci pour tes clarifications.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Tu la stockes où ta chaine de connexion ? Si tu as laissé faire le Wizard d'Entity Framework elle doit se trouver dans le web.config (ou app.config ça dépend de ton type de projet). Dans ce cas c'est dans ce fichier de config qu'il faudra aller modifier ta chaine de connexion.
    Par contre, ton objectif est de changer la chaine de connexion, mais ça concerne malgré tout la même base (au sens "modèle" du terme) ?

    Il faut simplement que dans ton projet WCF tu te créés un ServiceContract qui contiendra un OperationContract. Cet OperationContract, tu peux l'appeler "ChangeEFConnectionString(string connectionString)".
    Dans cette méthode, il te faudra aller modifier le web.config et remplacer la valeur actuelle de ta chaine de connexion par celle que tu passes en paramètre.
    Voici un lien pour modifier le web.config

    Pour créer un service WCF simplement je te donne un lien.
    http://msdn.microsoft.com/fr-fr/libr.../bb386386.aspx

    Bon courage

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Citation Envoyé par marcusien Voir le message
    Tu la stockes où ta chaine de connexion ? Si tu as laissé faire le Wizard d'Entity Framework elle doit se trouver dans le web.config (ou app.config ça dépend de ton type de projet). Dans ce cas c'est dans ce fichier de config qu'il faudra aller modifier ta chaine de connexion.
    Par contre, ton objectif est de changer la chaine de connexion, mais ça concerne malgré tout la même base (au sens "modèle" du terme) ?

    Il faut simplement que dans ton projet WCF tu te créés un ServiceContract qui contiendra un OperationContract. Cet OperationContract, tu peux l'appeler "ChangeEFConnectionString(string connectionString)".
    Dans cette méthode, il te faudra aller modifier le web.config et remplacer la valeur actuelle de ta chaine de connexion par celle que tu passes en paramètre.
    Voici un lien pour modifier le web.config

    Pour créer un service WCF simplement je te donne un lien.
    http://msdn.microsoft.com/fr-fr/libr.../bb386386.aspx

    Bon courage
    Merci pour ces liens. Je vais regarder tout ça et je te ferai un retour plus tard.

    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu peux suivre les conseils de marcusien.

    Je ne sais pas si tu connais assez bien WCF ou pas mais je te conseille de regarder les bases au cas où pour ne pas faire n'importe quoi.

    Pour ce qui du stockage de la chaîne de connexion, ne surtout pas la mettre dans le web.config. Pourquoi ? Parce que ton application est multi-utilisateur et la chaîne peut différer d'un utilisateur à l'autre et surtout tu risques de te taper des problèmes si plusieurs utilisateurs veulent enregistrer leurs chaines de connexions dans le web.config. Je te conseille de réfléchir en terme de session (certaines binding permettent d'activer les sessions comme le netTcpBinding). Tu stockes la chaîne de connexion dans une propriété (qui sera gardée en session) que l'utilisateur aura passée en appelant une opération du service qui aura mis la propriété IsInitiating de l'attribut OperationContract à true obligeant d'abords à passer par cette méthode avant pour pouvoir continuer.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Tu peux suivre les conseils de marcusien.

    Je ne sais pas si tu connais assez bien WCF ou pas mais je te conseille de regarder les bases au cas où pour ne pas faire n'importe quoi.

    Pour ce qui du stockage de la chaîne de connexion, ne surtout pas la mettre dans le web.config. Pourquoi ? Parce que ton application est multi-utilisateur et la chaîne peut différer d'un utilisateur à l'autre et surtout tu risques de te taper des problèmes si plusieurs utilisateurs veulent enregistrer leurs chaines de connexions dans le web.config. Je te conseille de réfléchir en terme de session (certaines binding permettent d'activer les sessions comme le netTcpBinding). Tu stockes la chaîne de connexion dans une propriété (qui sera gardée en session) que l'utilisateur aura passée en appelant une opération du service qui aura mis la propriété IsInitiating de l'attribut OperationContract à true obligeant d'abords à passer par cette méthode avant pour pouvoir continuer.
    C'est exactement ce que je souhaite faire.
    Je ne suis qu'un débutant en WCF, je sais comment le créer et le consommer. Mais cette histoire de changement de la chaîne de connexion est un vrai casse tête.
    Voici une capture d’écran de mon projet

    http://www.hostingpics.net/viewer.php?id=377892WPF.jpg

    La chaîne de connexion que j'utilise maintenant est fixe et elle est dans le web.config, je ne veux plus qu'elle soit dans ce fichier et je souhaite qu'elle soit saisie (ou lu depuis un fichier) au démarrage de l'application et stockée dans une propriété durant la session.

    Je vais regarder vos pistes mais si vous avez des raccourcis, n’hésitez pas j'ai vraiment besoin de votre aide

    Merci.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    En fait, je pense que tu ne dois pas te prendre la tête concernant le "stockage" de la chaine de connexion.
    Il ne faut pas nécessairement que tu la stockes.

    Il faut tout simplement que lorsque ton utilisateur tape les éléments de ta chaine de connexion, au moment d'appeler le web service, tu initialises le contexte de données en fournissant la chaine de connexion.
    Tu peux effectivement conserver cette chaine en session. Comme ça, si tu "Dispose" ton contexte, tu peux le réinstancier avec ta chaine de connexion conservée en session

    Instancier un context avec une chaine de connexion
    Utiliser EF dans une Shared Library

    Un peu de doc sur les sessions en WCF

    Enjoy

Discussions similaires

  1. [Débutant] PDF et Mail depuis une application wpf
    Par Anthony_C dans le forum Développement Windows
    Réponses: 0
    Dernier message: 27/08/2014, 17h11
  2. Connexion à SAP depuis une application externe
    Par landryx dans le forum SAP
    Réponses: 0
    Dernier message: 25/05/2010, 12h22
  3. Réponses: 6
    Dernier message: 16/01/2008, 15h37
  4. Réponses: 8
    Dernier message: 28/12/2007, 11h25
  5. Réponses: 2
    Dernier message: 02/10/2006, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo