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 Communication Foundation .NET Discussion :

Problème de lancement d'un service WCF


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut Problème de lancement d'un service WCF
    Salut
    Je suis tout à fait débutant dans le développement WFC et voici mon problème :
    J'ai ecrit un service tout à fai simple avec une interface contractuelle contenant une seule methode et une classe représentant ce service et qui implémente cette methode. Pour le ServiceHost j'ai ecrit un fichier de configuration dans lequel pour le endpoint j'utilise "basicHttpBinding" comme binding et "http://localhost:8010/MyService" comme adresse locale sans oublier le nom complet de mon interface pour le contrat. Quand je lance le service (host.Open()) je reçois un exception de type
    "System.ServiceModel.CommunicationObjectFaultedException" et aussi ce message d'erreur : "The communication object, System.ServiceModel.ServiceHost cannot be used for communication because it is in the faulted state"
    Je n'ai pas saisi le sens de ce message même après avoir fouillé un peu dans le msdn.
    Merci pour toute contribution
    A+

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Difficile à dire comme ça. Tu peux nous montrer le code?

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut
    Le code est simple le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    [SIZE="4"]/*L'interface et la class service se trouvent dans la même .dll "MyHomeServiceLib.dll"
    using System;
    using System.ServiceModel;
    //L'interface 
    namespace MyHomeServiceLib
    {
    [ServiceContract]
    public interface IHomeService
    {
    [OperationContract]
    string GetServiceResponse(string question);
    }
    }
    //La classe service
    using System;
    using System.ServiceModel;
    namespace MyHomeServiceLib
    {
    public class MyHomeService : IHomeService
    {
    public string GetServiceResponse(String question)
    {
    //Ici l'implémentation et...
    return response;
    }
    }
    }
    /*La classe hote du service, une simple application console qui fait référence à la .dll précédente lors de la compilation
    using System;
    using System.ServiceModel;
    using MyHomeServiceLib;
    namespace MyServiceHostApp
    {
    public class MyServiceHost
    {
    static void Main()
    {
    try
    {
    using(ServiceHost host = new ServiceHost(typeof(MyHomeService)))
    {
    Console.WriteLine("Staring service...");
    host.Open();       //Cause de l'exception
    Console.ReadLine();
    }
    }
    catch(Exception ex)
    {
    Console.WriteLine(ex);
    }
    }
    }
    }
    //Enfin la partie du fichier de configuration concernant le service :
    <system.serviceModel>
    <services>
    <service name="MyHomeServiceLib.MyHomeService">
    <endpoint address="http://localhost:8018/MyHomeService" 
    binding="basicHttpBinding" 
    contract="MyHomeServiceLib.IHomeService"/>
    </service>
    </services>
    </System.SeviceModel>[/SIZE]
    Voilà tout le code que j'espère avoir reporté sans erreur.Le compilateur ne m'en signale aucune.
    Merci pour ta contribution.

  4. #4
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    ServiceHost c'est plutôt si tu veux faire la config du service dans le code. Il faut alors lui donner tous les paramètres.

    Tu peux tout simplement utiliser quelque chose comme :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var monservice = new MyHomeService();
    monservice.Open();

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut
    Mais la classe MyHomeService ne supporte pas la methode Open() puisqu'elle ne dérive de rien du tout(à par de Object).Dois-je donc selon ce que vous proposez la dériver de ServiceHost ou y-a-il quelque chose que je ne vois pas que je devrais exploiter?
    Merci encore

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut
    [Résolu]
    Il fallait juste lancer le service à partir de l'application hôte en tant qu'administrateur.En fait la vrai exception qui était declenchée par la methode Open() de l'objet ServiceHost est de type
    System.ServiceModel.AddressAccessDeniedException elle même declenchée par une autre exception de type System.Net.HttpListenerException causée par le problème d'autorisation d'accès aux ports de communication.Mais ces exceptions étaient ecrasées par l'exception de type
    System.ServiceModel.CommunicationObjectFaultedException à cause de l'utilisation de 'using' qui mettait l'objet ServiceHost dans l'état Faulted.
    Voilà.Le lancement du service en tant qu'administrateur a résolu le problème.
    Merci encore.
    A+

Discussions similaires

  1. problème de déploiement d'un service WCF
    Par johnjohn26 dans le forum Services Web
    Réponses: 19
    Dernier message: 11/09/2012, 11h50
  2. Réponses: 7
    Dernier message: 12/08/2010, 11h40
  3. Probléme au lancement des Services Oracle
    Par Taoufik109 dans le forum Administration
    Réponses: 6
    Dernier message: 19/10/2007, 13h56
  4. [3.0] [Service Wcf] problème avec le fichier .svc
    Par marc_dd dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 14/08/2007, 17h21
  5. Problème de lancement d'une application comme service
    Par WELCOMSMAIL dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 29/03/2007, 15h46

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